# v1 is a little-endian 16 bit (short) so needs 2 bytes # if substr didn't limit to 2 bytes substr($raw,1) works also # unpack will use first 2 bytes. my ($len) = unpack 'v1',substr($raw,1,2);#substr deals in bytes not nibbles. print $len,"\n"; #prints 71 print unpack ('v', substr($raw,1)),"\n"; #prints 71 print unpack ('x v', $raw ),"\n"; #prints 71