On Wed, 14 Aug 2002 07:47:31 -0700, Piers Cawley wrote: > Further to this, here's a failing test script: > > use Test::More tests => 2 > > sub Bar::DESTROY { eval { 1 } } > > eval { my $obj = bless {}, 'Foo'; > die "Deliberately" }; > like $@, qr/Deliberately/, "This passes"; > > eval { my $obj = bless {}, 'Bar'; > die "Deliberately" }; > like $@, qr/Deliberately/, "This fails"; > > However, that still fails without the tests. However, the (complicated) code > I've got that highlighted the problem works when there's no $SIG{__DIE__} in > place. Back to the drawing board.
This looks like a standard end-of-scope action to me. If you do this: sub Bar::DESTROY { local $@; eval { 1 } } or this: my $obj; eval { $obj = bless {}, 'Bar'; die "Delibarately"; }; it works as I would expect. What do you expect to see in $@ when an eval BLOCK fires successfully? -- c