10 sub End::DESTROY { $_[0]->() }
14 return bless(sub { $c->() }, "End");
17 foreach my $inx ("", "aabbcc\n", [qw(aa bb cc)]) {
18 foreach my $outx ("", "xxyyzz\n", [qw(xx yy zz)]) {
20 local $SIG{__WARN__} = sub { $warn .= $_[0] };
23 my $e = end { die $inx if $inx };
25 ok ref($@) eq ref($outx) && $@ eq $outx;
26 $warn =~ s/ at [^\n]*\n\z//;
27 is $warn, $inx ? "\t(in cleanup) $inx" : "";
34 local $SIG{__WARN__} = sub { $warn .= $_[0] };
35 { my $e = end { no warnings "misc"; die "aa\n"; }; }
42 local $SIG{__WARN__} = sub { $warn .= $_[0] };
43 { my $e = end { use warnings "misc"; die "aa\n"; }; }
44 is $warn, "\t(in cleanup) aa\n";
49 local $SIG{__WARN__} = sub { $warn .= $_[0] };
50 { my $e = end { no warnings "misc"; die "aa\n"; }; }
56 local $SIG{__WARN__} = sub { $warn .= $_[0] };
57 { my $e = end { use warnings "misc"; die "aa\n"; }; }
58 is $warn, "\t(in cleanup) aa\n";
64 local $SIG{__WARN__} = sub { $warn .= $_[0] };
65 { my $e = end { no warnings "misc"; die "aa\n"; }; }
72 local $SIG{__WARN__} = sub { $warn .= $_[0] };
73 { my $e = end { use warnings "misc"; die "aa\n"; }; }
74 is $warn, "\t(in cleanup) aa\n";