#we are packing nibbles (4 bits) at a time # H is big-endian order # h is little-endian order (swaps adjacent nibbles) my $raw = pack 'H*', '8447000c0000110a0350'; #decode back to input string... print unpack ('H*', $raw), "\n"; # prints: 8447000c0000110a0350 print unpack ('h*', $raw), "\n"; # prints: 487400c0000011a03005 #need to set binmode when writing raw binary data... open (BIN, '>', 'test.bin') || die "can't open test.bin"; binmode(BIN); print BIN $raw; close BIN;