AMTag:[Perl]Perlでパッケージ名つきの関数を動的に呼び出す方法を紹介します。1.はじめに仕事で、パッケージ名つきの関数を動的に呼び出す必要が生じました。パッケージ名のつかない関数を動的に呼び出す方法や、オブジェクトとして呼び出す方法はネットで結構ヒットするのですが、パッケージ名つきの関数を呼び出し方が分かりません。いうことで、本エントリーでパッケージ名つきの関数を動的に呼び出す方法を備忘録でまとめておきます。条件によって違うかもしれませんがベストプラクティスや認識誤りがあればどこかでつぶやいてください。2.パッケージ名つきの関数を動的に呼び出すパッケージ名つきの関数を動的に呼び出すコードは以下です。ここではパッケージ、メソッド、引数をすべて動的(=呼び出し元のパラメータを使うという意味)に生成します。);モジュールは以下です。1;以下、コードの解説です。パッケージの呼び出しはevalコマンドで行います。$class;";パッケージが存在しない場合、$@(evalによるPerlの構文エラーメッセージ)のチェックでNGになります。}たとえば次のような感じです。1.パッケージ、メソッドとパラメータを文字列結合してメソッド呼び出しのフォーマットを生成します。パラメータはevalで評価されるよう、シングルクォーテーションで括ります。")";evalで「Sample::foo($param)」を起動します。起動メソッドの返却値も受け取ることができます。"$func;";指定したメソッドがみつからないなどの場合、2回目の$@のチェックでNGになります。}たとえば次のような感じです。1.上記のサンプルを実行すると次のような出力を得られます(改行は入りません)。World!14.参考サイト参考サイトは以下です。ありがとうございました。*必須(非表示)URL(U):情報を保存する?コメントへの返信ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。すべてのご質問にはお答えできない可能性があります。Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。