use strict;
use Devel::Peek;
$Devel::Peek::pv_limit = 3;
use warnings;
printf "$^V\n";
my $s = 's' x 32;
Dump $s;
my $addr = pack 'p', $s;
printf "Q: hex: %x, dec: %1\$d\n", unpack 'Q', $addr;
Dump $s;
__END__
v5.32.1
SV = PV(0x1fbf48) at 0x24f0e08
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x2565cb8 "sss"...\0
CUR = 32
LEN = 34
Q: hex: 2565cb8, dec: 39214264
SV = PV(0x1fbf48) at 0x24f0e08
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x2565cb8 "sss"...\0
CUR = 32
LEN = 34
v5.42.0
SV = PV(0x1330f20f4c0) at 0x1330f2836a0
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x1330f3129f0 "sss"...\0
CUR = 32
LEN = 40
COW_REFCNT = 1
Q: hex: 1330f312400, dec: 1318809838592
SV = PV(0x1330f20f4c0) at 0x1330f2836a0
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x1330f312400 "sss"...\0
CUR = 32
LEN = 34
Previously (5.32), there was consistency as expected: PV address was "real" RAM address; and simple fact of "packing to pointer" didn't change scalar' guts. Now, I see some weird huge ("virtual"?) addresses -- even though everything works (including, not shown above, accessing (or acquiring, same values) these pointers from C). Where such numbers come from, is this the new normal? Is difference in "Dump" output related to that, or totally another issue?