perl -V:ptrsize #### perl -E"use Config qw( %Config ); say $Config{ptrsize};" #### use Config qw( %Config ); my $ptr_size = $Config{ptrsize}; my $ptr_format = $ptr_size == 8 ? 'Q' : $ptr_size == 4 ? 'L' : die("Unrecognized pointer size"); my $s = unpack 'p', pack $ptr_format, $addr; #### >perl -wE"say unpack 'p', pack('P', 'abc')" abc >perl -wE"say unpack 'p', pack('P', 'abc').qq{\0\0\0\0\0\0\0\0}" abc #### my $s = unpack 'p', pack 'J', $addr; #### # works(??): 'my potato' my $x = unpack 'p', pack 'N2', $return; print Dumper $x; #### >perl -wE"say sprintf '%vX', pack 'J', 0x0000000012345678" 78.56.34.12.0.0.0.0 #### >perl -wE"say sprintf '%vX', pack 'N2', 0x0000000012345678" 12.34.56.78.0.0.0.0 #### # works(??): 'my potato' my $x = unpack 'p', pack 'IN', $return; print Dumper $x; #### >perl -wE"say sprintf '%vX', pack 'J', 42952784" 50.68.8F.2.0.0.0.0 >perl -wE"say sprintf '%vX', pack 'IN', 42952784" 50.68.8F.2.0.0.0.0 #### >perl -wE"say sprintf '%vX', pack 'J', 0x0123456789ABCDEF" EF.CD.AB.89.67.45.23.1 >perl -wE"say sprintf '%vX', pack 'IN', 0x0123456789ABCDEF" EF.CD.AB.89.0.0.0.0