use strict; use warnings; use Devel::Peek; my $y; Dump($y); for my $x (undef, 10) { print "\$x = $x\n"; Dump($x); Dump($_) for ( ($x, $y, undef) = 1..10), $x, $y; } #### SV = NULL(0x0) at 0x8ad23d0 REFCNT = 1 FLAGS = (PADMY) Use of uninitialized value $x in concatenation (.) or string at ./test.pl line 10. $x = SV = NULL(0x0) at 0x8ab54fc REFCNT = 2147483499 FLAGS = (READONLY) SV = IV(0x8ab987c) at 0x8ab9880 REFCNT = 2 FLAGS = (IOK,pIOK) IV = 1 SV = IV(0x8ad23cc) at 0x8ad23d0 REFCNT = 2 FLAGS = (PADMY,IOK,pIOK) IV = 2 SV = IV(0x8adf414) at 0x8adf418 REFCNT = 2 FLAGS = (IOK,pIOK) IV = 3 SV = NULL(0x0) at 0x8ab54fc REFCNT = 2147483500 FLAGS = (READONLY) SV = IV(0x8ad23cc) at 0x8ad23d0 REFCNT = 2 FLAGS = (PADMY,IOK,pIOK) IV = 2 $x = 10 SV = PVIV(0x8ab86ac) at 0x8ad2410 REFCNT = 2 FLAGS = (PADTMP,IOK,POK,READONLY,pIOK,pPOK) IV = 10 PV = 0x8af56a0 "10"\0 CUR = 2 LEN = 4 Modification of a read-only value attempted at ./test.pl line 12.