Check existing $^W functionality __END__ # warnable code, warnings disabled $a =+ 3 ; EXPECT ######## -w # warnable code, warnings enabled via command line switch $c =+ 3 ; EXPECT Reversed += operator at - line 3. Name "main::c" used only once: possible typo at - line 3. ######## #! perl -w # warnable code, warnings enabled via #! line $c =+ 3 ; EXPECT Reversed += operator at - line 3. Name "main::c" used only once: possible typo at - line 3. ######## # warnable code, warnings enabled via compile time $^W BEGIN { $^W = 1 } $c =+ 3 ; EXPECT Reversed += operator at - line 4. Name "main::c" used only once: possible typo at - line 4. ######## -w # warnable code, warnings enabled via command line switch use utf8; use open qw( :utf8 :std ); $Ằ =+ 3 ; EXPECT Reversed += operator at - line 5. Name "main::Ằ" used only once: possible typo at - line 5. ######## #! perl -w # warnable code, warnings enabled via #! line use utf8; use open qw( :utf8 :std ); $Ằ =+ 3 ; EXPECT Reversed += operator at - line 5. Name "main::Ằ" used only once: possible typo at - line 5. ######## # warnable code, warnings enabled via compile time $^W BEGIN { $^W = 1 } use utf8; use open qw( :utf8 :std ); $Ằ =+ 3 ; EXPECT Reversed += operator at - line 6. Name "main::Ằ" used only once: possible typo at - line 6. ######## # compile-time warnable code, warnings enabled via runtime $^W # so no warning printed. $^W = 1 ; $a =+ 3 ; EXPECT ######## # warnable code, warnings enabled via runtime $^W $^W = 1 ; my $b ; chop $b ; EXPECT Use of uninitialized value $b in scalar chop at - line 4. ######## # warnings enabled at compile time, disabled at run time BEGIN { $^W = 1 } $^W = 0 ; my $b ; chop $b ; EXPECT ######## # warnings disabled at compile time, enabled at run time BEGIN { $^W = 0 } $^W = 1 ; my $b ; chop $b ; EXPECT Use of uninitialized value $b in scalar chop at - line 5. ######## -w --FILE-- abcd my $b ; chop $b ; 1 ; --FILE-- require "./abcd"; EXPECT Use of uninitialized value $b in scalar chop at ./abcd line 1. ######## --FILE-- abcd my $b ; chop $b ; 1 ; --FILE-- #! perl -w require "./abcd"; EXPECT Use of uninitialized value $b in scalar chop at ./abcd line 1. ######## --FILE-- abcd my $b ; chop $b ; 1 ; --FILE-- $^W =1 ; require "./abcd"; EXPECT Use of uninitialized value $b in scalar chop at ./abcd line 1. ######## --FILE-- abcd $^W = 0; my $b ; chop $b ; 1 ; --FILE-- $^W =1 ; require "./abcd"; EXPECT ######## --FILE-- abcd $^W = 1; 1 ; --FILE-- $^W =0 ; require "./abcd"; my $b ; chop $b ; EXPECT Use of uninitialized value $b in scalar chop at - line 3. ######## $^W = 1; eval 'my $b ; chop $b ;' ; print $@ ; EXPECT Use of uninitialized value $b in scalar chop at (eval 1) line 1. ######## eval '$^W = 1;' ; print $@ ; my $b ; chop $b ; EXPECT Use of uninitialized value $b in scalar chop at - line 4. ######## eval {$^W = 1;} ; print $@ ; my $b ; chop $b ; EXPECT Use of uninitialized value $b in scalar chop at - line 4. ######## { local ($^W) = 1; } my $b ; chop $b ; EXPECT ######## my $a ; chop $a ; { local ($^W) = 1; my $b ; chop $b ; } my $c ; chop $c ; EXPECT Use of uninitialized value $b in scalar chop at - line 5. ######## -w -e undef EXPECT Use of uninitialized value in -e at - line 2. ######## $^W = 1 + 2 ; EXPECT ######## $^W = $a ; EXPECT ######## sub fred {} $^W = fred() ; EXPECT ######## sub fred { my $b ; chop $b ;} { local $^W = 0 ; fred() ; } EXPECT ######## sub fred { my $b ; chop $b ;} { local $^W = 1 ; fred() ; } EXPECT Use of uninitialized value $b in scalar chop at - line 2.