in reply to return from eval

With regard to the do{} you can emulate the behaviour you want fairily easily.
my $foo=do{ my $return; { unless ($bar) { $return=$baz; last; } elsif ($bar==1) { $return=$bob; last; } $return=fnaggle(fubar(foo(bar($bar)))); } $return; };
As for the eval, MarkM suggested a work around.

With the block form of eval being used mainly as a "try" construct, rather than "define an anonomous sub and call it immediatly with no arguments", this doesn't really fit anymore.

Interesting thought, and I think you have a point there. Unfortunately as we all know theres nothing that can be done about it.

--- demerphq
my friends call me, usually because I'm late....