http://qs1969.pair.com?node_id=736362


in reply to Re: eval and return values
in thread eval and return values

... since $foo is lexically re-declared in the assignment within the eval block (something that strictures would have warned you about).
No, that's kosher with warnings and strictures:
>perl -wMstrict -le "sub S { return 'Something' } my $foo = 'bar'; eval { my $foo = S() }; die $@ if $@; print qq{after eval: $foo}; " after eval: bar