sub 内部で eval ブロック内から直接 return できない
すいません,基礎ができていませんでした。
sub foobar { my $arg = shift; eval { return 'not defined' unless defined $arg; }; return 'defined'; } print foobar(); # 'defined' is printed.
eval() 内の return は eval 節自体の評価値として返す,という意味しかもたないのですね,あらためて perldoc -f eval を読みました。お気軽に例外処理としてしか考えてなかったのではまりました。