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.

CHANGES
  Version 1.118

    Ready to go public (with Paul's version, patched for native Mac
    support)! Warnings have been suppressed in a few places where undefined
    values appear.

