このブログが始まってからの総計で一番検索が多い、 「subroutine undefined」というPerlのエラーメッセージ。 ※以下ではなんとなく「エラー」ではなく「例外」と言います 内容は読んで字のごとく「未定義のサブルーチン」。 つまり存在しないサブルーチンを呼び出したという例外のこと。 これは単にtypoして sub foo { print 'yeah !'; } boo(); になってる場合が最も頻出なわけですが。 それよりも頻度が低いおかげでなかなか原因が思い当たらないのが 「eval中に構文エラーで破棄されたサブルーチンの呼び出し」というもの。 まずはサンプルを。 eval { sub foo { my $a = 1: # here is an typo print $a; } }; foo(); foo()の1行目でセミコロンを打ち間違えてます。 なので、eval実行時に