my $strict_refs = not eval { no warnings; ${'var'}; 1 }; my $strict_subs = not eval 'no warnings; ThisDoesNotExist; 1'; my $strict_vars = not eval 'no warnings; $ThisDoesNotExist; 1'; #### $|=1; { local $^W = 0; print "1: "; print undef; # no warning print "\n"; print "1b: $^W\n"; # 0 print "\n"; } { local $^W = 1; print "2: "; print undef; # warning print "\n"; print "2b: $^W\n"; # 1 print "\n"; } { no warnings; print "3: "; print undef; # no warning print "\n"; print "3b: $^W\n"; # 0 print "\n"; } { use warnings; print "4: "; print undef; # warning print "\n"; print "4b: $^W\n"; # 0 print "\n"; } { use warnings; local $^W = 0; print "5: "; print undef; # warning print "\n"; # "use warnings" overrides "$^W = 0" print "5b: $^W\n"; # 0 print "\n"; } { no warnings; local $^W = 1; print "6: "; print undef; # no warning print "\n"; # "no warnings" overrides "$^W = 1" print "6b: $^W\n"; # 1 print "\n"; }