$ perl -MDevel::Peek -e'Dump(undef)' SV = NULL(0x0) at 0x2186148 REFCNT = 2147483639 FLAGS = (READONLY,PROTECT) #### $ perl -MDevel::Peek -e'Dump($a[0])' SV = NULL(0x0) at 0x1116148 REFCNT = 2147483639 FLAGS = (READONLY,PROTECT) #### $ perl -MDevel::Peek -e'$a[0]=undef; Dump($a[0])' SV = NULL(0x0) at 0xc93f90 REFCNT = 1 FLAGS = () #### use feature qw( say ); my @a; { say open(my $fh, '<', $a[0]) ? 1 : 0; } # 1 $a[1] = undef; { say open(my $fh, '<', $a[0]) ? 1 : 0; } # 1 $a[0] = undef; { say open(my $fh, '<', $a[0]) ? 1 : 0; } # 0 delete($a[0]); { say open(my $fh, '<', $a[0]) ? 1 : 0; } # 1