The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Check existing $^WARNING functionality


__END__

# warnable code, warnings enabled via runtime $^WARNING
$^WARNING = 1 ;
my $b ; chop $b ;
EXPECT
Use of uninitialized value $b in chop at - line 4 character 9.
########

# warnings enabled at compile time, disabled at run time
BEGIN { $^WARNING = 1 }
$^WARNING = 0 ;
my $b ; chop $b ;
EXPECT

########

# warnings disabled at compile time, enabled at run time
BEGIN { $^WARNING = 0 }
$^WARNING = 1 ;
my $b ; chop $b ;
EXPECT
Use of uninitialized value $b in chop at - line 5 character 9.
########
-w
--FILE-- abcd
my $b ; chop $b ;
1 ;
--FILE-- 
require "./abcd";
EXPECT
Use of uninitialized value $b in chop at ./abcd line 1 character 9.
    (require) called at - line 1 character 1.
########

--FILE-- abcd
my $b ; chop $b ;
1 ;
--FILE-- 
#! perl -w
require "./abcd";
EXPECT
Use of uninitialized value $b in chop at ./abcd line 1 character 9.
    (require) called at - line 2 character 1.
########

--FILE-- abcd
my $b ; chop $b ;
1 ;
--FILE-- 
$^WARNING =1 ;
require "./abcd";
EXPECT
Use of uninitialized value $b in chop at ./abcd line 1 character 9.
    (require) called at - line 2 character 1.
########

--FILE-- abcd
$^WARNING = 0;
my $b ; chop $b ;
1 ;
--FILE-- 
$^WARNING =1 ;
require "./abcd";
EXPECT

########

--FILE-- abcd
$^WARNING = 1;
1 ;
--FILE-- 
$^WARNING =0 ;
require "./abcd";
my $b ; chop $b ;
EXPECT
Use of uninitialized value $b in chop at - line 3 character 9.
########

$^WARNING = 1;
eval 'my $b ; chop $b ;' ;
print $^STDOUT, $^EVAL_ERROR ;
EXPECT
Use of uninitialized value $b in chop at (eval 1) line 1 character 9.
    (eval) called at - line 3 character 1.
########

eval '$^WARNING = 1;' ;
print $^STDOUT, $^EVAL_ERROR ;
my $b ; chop $b ;
EXPECT
Use of uninitialized value $b in chop at - line 4 character 9.
########

try {$^WARNING = 1;} ;
print $^STDOUT, $^EVAL_ERROR ;
my $b ; chop $b ;
EXPECT
Use of uninitialized value $b in chop at - line 4 character 9.
########

do {
    local ($^WARNING) = 1;
};
my $b ; chop $b ;
EXPECT

########

my $a ; chop $a ;
do {
    local ($^WARNING) = 1;
    my $b ; chop $b ;
};
my $c ; chop $c ;
EXPECT
Use of uninitialized value $b in chop at - line 5 character 13.
########
-w
-e undef
EXPECT
Use of uninitialized value in -e at - line 2 character 2.
########

$^WARNING = 1 + 2 ;
EXPECT

########

$^WARNING = $a ;
EXPECT

########

sub fred {}
$^WARNING = fred() ;
EXPECT

########

sub fred { my $b ; chop $b ;}
do { local $^WARNING = 0 ;
  fred() ;
};
EXPECT

########

sub fred { my $b ; chop $b ;}
do { local $^WARNING = 1 ;
  fred() ;
};
EXPECT
Use of uninitialized value $b in chop at - line 2 character 20.
    main::fred called at - line 4 character 3.
########