I am writing a Perl script capable of loading a binary RAW file (.bin file extension), calculate the CRC-16 (unsigned short, 16bits ~ 2 bytes), and store this CRC in a file trailer, using the following commands:
my $ctx = Digest::CRC->new( type => 'crc16' ); #OK :)
open my $FH, '<:raw', $inFile or die $!; #OK :)
$ctx->addfile(*$FH); #OK :)
print ("$inFile CRC16 value = 0x"); #OK :)
my $digest = $ctx->hexdigest; #OK :)
print $digest, "\n"; #OK :)
print WRITEHANDLE pack("n*", $digest); #NOT OK :(
Last command raises a warning, and more the CRC is not stored in the correct way
and in the binary output last 2 bytes are not once calculated/expected
It is clear that I am not using properly the pack method for storing the value, but from the pack() MAN
What is the correct Template for pack() in this case?