convert-binhex/README
2013-08-21 23:44:59 -07:00

87 lines
3.0 KiB
Plaintext

NAME
Convert::BinHex - extract data from Macintosh BinHex files
*ALPHA WARNING: this code is currently in its Alpha release. Things may
change drastically until the interface is hammered out: if you have
suggestions or objections, please speak up now!*
SYNOPSIS
Simple functions:
use Convert::BinHex qw(binhex_crc macbinary_crc);
# Compute HQX7-style CRC for data, pumping in old CRC if desired:
$crc = binhex_crc($data, $crc);
# Compute the MacBinary-II-style CRC for the data:
$crc = macbinary_crc($data, $crc);
Hex to bin, low-level interface. Conversion is actually done via an
object (the section on "Convert::BinHex::Hex2Bin") which keeps internal
conversion state:
# Create and use a "translator" object:
my $H2B = Convert::BinHex->hex2bin; # get a converter object
while (<STDIN>) {
print $STDOUT $H2B->next($_); # convert some more input
}
print $STDOUT $H2B->done; # no more input: finish up
Hex to bin, OO interface. The following operations *must* be done in the
order shown!
# Read data in piecemeal:
$HQX = Convert::BinHex->open(FH=>\*STDIN) || die "open: $!";
$HQX->read_header; # read header info
@data = $HQX->read_data; # read in all the data
@rsrc = $HQX->read_resource; # read in all the resource
Bin to hex, low-level interface. Conversion is actually done via an
object (the section on "Convert::BinHex::Bin2Hex") which keeps internal
conversion state:
# Create and use a "translator" object:
my $B2H = Convert::BinHex->bin2hex; # get a converter object
while (<STDIN>) {
print $STDOUT $B2H->next($_); # convert some more input
}
print $STDOUT $B2H->done; # no more input: finish up
Bin to hex, file interface. Yes, you can convert *to* BinHex as well as
from it!
# Create new, empty object:
my $HQX = Convert::BinHex->new;
# Set header attributes:
$HQX->filename("logo.gif");
$HQX->type("GIFA");
$HQX->creator("CNVS");
# Give it the data and resource forks (either can be absent):
$HQX->data(Path => "/path/to/data"); # here, data is on disk
$HQX->resource(Data => $resourcefork); # here, resource is in core
# Output as a BinHex stream, complete with leading comment:
$HQX->encode(\*STDOUT);
PLANNED!!!! Bin to hex, "CAP" interface. *Thanks to Ken Lunde for
suggesting this*.
# Create new, empty object from CAP tree:
my $HQX = Convert::BinHex->from_cap("/path/to/root/file");
$HQX->encode(\*STDOUT);
DESCRIPTION
BinHex is a format used by Macintosh for transporting Mac files safely
through electronic mail, as short-lined, 7-bit, semi-compressed data
streams. Ths module provides a means of converting those data streams
back into into binary data.