$|=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"; }