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