• ベストアンサー

require後、関数を実行時にサブルーチンが存在すれば実行させたい

perlでrequire後、関数を実行時にサブルーチンが存在すれば実行させたいのですが、どうやれば調べられるかご存知でしたらご教授願えませんでしょうか。 foreach(...){ require "$file"; &Print;・・・ここでエラーが出てしまうのを関数が存在する場合だけ実行するようにしたいのです。 } 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

じゃあ最強の手段, 型グロブに対する参照でどうだ. if (defined *Print{CODE}) とか (Print が foo パッケージで定義されているなら) if (defined *{$foo::{Print}}{CODE}) とか.

taku0
質問者

お礼

型グロブでいけるならと 直接サブルーチンでやってみたらいけました! &Print if defined&Print; あざっす!!

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

eval でいけるか?

taku0
質問者

お礼

evalで実行時もsyslogにエラーメッセージが残ってしまう為、それを回避したいと思い、予めサブルーチンが存在するかをチェックしたかったのです。 ハッシュでは、キーが存在するかをチェックする関数がありますが サブルーチンそのものが存在するかを確かめる為の関数ってないのでしょうか・・・。 ぐぐっても見つからないので、質問しております で、とりあえず関数を実行する前に open(STDERR, ">/dev/null"); としてエラーを表示させないようにはしてみているのですが・・・

関連するQ&A