すいません,基礎ができていませんでした。 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 を読みました。お気軽に例外処理としてしか考えてなかったのではまりました。

