$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