$strMacBinaryHeader = "CZ64A4A4AAvvvaaNNVVvaA4A8VVaaN"; @nameMacBinaryHeader = ( "ID", "filename", "filetype", "filecreator", "fileflags", undef, "yoffs", "xoffs", "fileid", "fileflags2", undef, "dataforklength", "resourceforklength", "creationdate", "lastmodified", "infolength", "fileflags3", "macbinary3id", undef, "totalunpackedlength", "secondaryheaderlength", "macbinary3requiredversion", "CRC" );sub decodeMacBinaryHeader { my ($Buffer) = @_; my $Result = &decodeRecord($Buffer, $strMacBinaryHeader, @nameMacBinaryHeader ); roundUp( \$Result->{dataforklength}, 128 ); return $Result; }; $HeaderSize = &RecSize($strMacBinaryHeader); $Filename = shift || "../macicon/test/icon"; open FILE, "< $Filename" or die "Error opening \"$Filename\" : $!\n"; binmode FILE; read FILE, $MacBinHeader, $HeaderSize; $Header = decodeMacBinaryHeader($MacBinHeader); $ResourceForkStart = $HeaderSize + $Header->{secondaryheaderlength} + $Header->{dataforklength}; &dump( $Header );