$x = $hIn->{string};
$x = $hIn->{number};
Devel::Peek::Dump($x);
#and
$x = $hIn->{string};
$x = "$hIn->{number}";
Devel::Peek::Dump($x);
####
$x = $hIn->{string};
$x = $hIn->{number};
Devel::Peek::Dump($x);
#followed immediately by
print "$x\n";
Devel::Peek::Dump($x);
####
use strict;
use warnings;
use Devel::Peek;
my $hIn = {string => 'abc', number => 5 };
print "#*** Setting...: " . q{$x=$hIn->{string}} . "\n";
my $x = $hIn->{string};
# we assigned a new value to $x BUT
# Devel::Peek::Dump claims that $x has PV = "abc"\0
# !!!! ????
print STDERR "#*** " . q{$x = $hIn->{number};} . "\n";
$x = $hIn->{number};
Devel::Peek::Dump($x);
# but after being used in an interpolation
# Devel::Peek::Dump says that $x has PV = "5"\0
print STDERR "#*** " . q{print "<$x>\n"} . "\n";
print "<$x>\n";
Devel::Peek::Dump($x);
print "#*** Resetting...: " . q{$x=$hIn->{string}} . "\n";
$x = $hIn->{string};
# we assigned a new value to $x BUT
# Devel::Peek::Dump claims that $x has PV = "abc"\0
# !!!! ????
print STDERR "#*** " . q{$x = $hIn->{number};} . "\n";
$x = $hIn->{number};
Devel::Peek::Dump($x);
# but after being used in an interpolation
# Devel::Peek::Dump says that $x has PV = "5"\0
print STDERR "#*** " . q{"$x = $hIn->{number};"} . "\n";
$x = "$hIn->{number}";
Devel::Peek::Dump($x);
####
#*** Setting...: $x=$hIn->{string}
#*** $x = $hIn->{number};
SV = PVIV(0x8150b10) at 0x814f624
REFCNT = 1
FLAGS = (PADBUSY,PADMY,IOK,pIOK)
IV = 5
PV = 0x81902e8 "abc"\0
CUR = 3
LEN = 4
#*** print "<$x>\n"
<5>
SV = PVIV(0x8150b10) at 0x814f624
REFCNT = 1
FLAGS = (PADBUSY,PADMY,IOK,POK,pIOK,pPOK)
IV = 5
PV = 0x81902e8 "5"\0
CUR = 1
LEN = 4
#*** Resetting...: $x=$hIn->{string}
#*** $x = $hIn->{number};
SV = PVIV(0x8150b10) at 0x814f624
REFCNT = 1
FLAGS = (PADBUSY,PADMY,IOK,pIOK)
IV = 5
PV = 0x81902e8 "abc"\0
CUR = 3
LEN = 4
#*** "$x = $hIn->{number};"
SV = PVIV(0x8150b10) at 0x814f624
REFCNT = 1
FLAGS = (PADBUSY,PADMY,POK,pPOK)
IV = 5
PV = 0x81902e8 "5"\0
CUR = 1
LEN = 4