9 sub End::DESTROY { $_[0]->() }
13 return bless(sub { $c->() }, "End");
16 foreach my $inx ("", "aabbcc\n", [qw(aa bb cc)]) {
17 foreach my $outx ("", "xxyyzz\n", [qw(xx yy zz)]) {
19 local $SIG{__WARN__} = sub { $warn .= $_[0] };
22 my $e = end { die $inx if $inx };
24 ok ref($@) eq ref($outx) && $@ eq $outx;
25 $warn =~ s/ at [^\n]*\n\z//;
26 is $warn, $inx ? "\t(in cleanup) $inx" : "";
33 local $SIG{__WARN__} = sub { $warn .= $_[0] };
34 { my $e = end { no warnings "misc"; die "aa\n"; }; }
41 local $SIG{__WARN__} = sub { $warn .= $_[0] };
42 { my $e = end { use warnings "misc"; die "aa\n"; }; }
43 is $warn, "\t(in cleanup) aa\n";
48 local $SIG{__WARN__} = sub { $warn .= $_[0] };
49 { my $e = end { no warnings "misc"; die "aa\n"; }; }
55 local $SIG{__WARN__} = sub { $warn .= $_[0] };
56 { my $e = end { use warnings "misc"; die "aa\n"; }; }
57 is $warn, "\t(in cleanup) aa\n";
63 local $SIG{__WARN__} = sub { $warn .= $_[0] };
64 { my $e = end { no warnings "misc"; die "aa\n"; }; }
71 local $SIG{__WARN__} = sub { $warn .= $_[0] };
72 { my $e = end { use warnings "misc"; die "aa\n"; }; }
73 is $warn, "\t(in cleanup) aa\n";