D:\Development>perl -Mstrict -wle "my $foo=1 if 0; print defined($foo) ? $foo : 'undef'" undef D:\Development>perl -Mstrict -wle "if ( 0 ) { my $foo=1 } print defined($foo) ? $foo : 'undef'" Global symbol "$foo" requires explicit package name at -e line 1. Global symbol "$foo" requires explicit package name at -e line 1. Execution of -e aborted due to compilation errors.