$@= "Before";
my $end= "None";
eval q{
{
local $@;
eval 'die "DoNotLeak\n"';
}
$end= $@;
};
print "($end)\n";
####
use strict;
use warnings;
use Test qw( plan ok );
plan( tests => 12 );
sub Test {
my $first= "None";
my $end= "None";
eval q{
{
local $@
if $_[0];
eval 'die "DoNotLeak\n"';
die "DoNotHide\n"
if $_[1];
$first= $@;
}
$end= $@;
};
chomp
for $first, $end;
return( $first, $end );
}
while( ) {
my( $local, $die, $one, $two, $three )= split /\s*,/, $_;
$@= "Before";
my( $first, $end )= Test( $local, $die );
ok( $first, $one, "local:$local die:$die 1" );
ok( $end, $two, "local:$local die:$die 2" );
ok( $@, $three, "local:$local die:$die 3" );
}
__END__
0,0,DoNotLeak,DoNotLeak,,
1,0,DoNotLeak,Before ,,
0,1,None ,None ,DoNotHide
1,1,None ,None ,DoNotHide
##
##
1..12
# Running under perl version 5.008008 for MSWin32
# Using Test.pm version 1.25
ok 1
ok 2
ok 3
ok 4
not ok 5
# Test 5 got: "" (- at line 31 fail #2)
# Expected: "Before" (local:1 die:0 2)
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
not ok 12
# Test 12 got: "" (- at line 32 fail #4)
# Expected: "DoNotHide\n" (local:1 die:1 3)