Can anybody explain the following Perl code for me, please?
I think its in Perl and I have no clue about Perl programming. Please explain what the following code does?
$t = test(10);
sub test() {
my $str = unpack("B32", pack("N",shift));
$str2 = substr($str,16,length($str));
return $str2;
}
The pack, unpack and substr functions are documented here, here and here, respectively.
pack("N"...)packs a number into a four-byte network-order representation.unpack("B32"...)unpacks this packed number as a string of bits (zeros and ones). Thesubstrcall takes the second half of this bit string (from bit 16 onwards), which represents the lower 16 bits of the original 32-bit number.Why it does it this way is a mystery to me. A simpler and faster solution is to deal with the lower 16 bits at the outset (note the lower case
"n"):