- ベストアンサー
require後、関数を実行時にサブルーチンが存在すれば実行させたい
perlでrequire後、関数を実行時にサブルーチンが存在すれば実行させたいのですが、どうやれば調べられるかご存知でしたらご教授願えませんでしょうか。 foreach(...){ require "$file"; &Print;・・・ここでエラーが出てしまうのを関数が存在する場合だけ実行するようにしたいのです。 } 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
じゃあ最強の手段, 型グロブに対する参照でどうだ. if (defined *Print{CODE}) とか (Print が foo パッケージで定義されているなら) if (defined *{$foo::{Print}}{CODE}) とか.
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
eval でいけるか?
質問者
お礼
evalで実行時もsyslogにエラーメッセージが残ってしまう為、それを回避したいと思い、予めサブルーチンが存在するかをチェックしたかったのです。 ハッシュでは、キーが存在するかをチェックする関数がありますが サブルーチンそのものが存在するかを確かめる為の関数ってないのでしょうか・・・。 ぐぐっても見つからないので、質問しております で、とりあえず関数を実行する前に open(STDERR, ">/dev/null"); としてエラーを表示させないようにはしてみているのですが・・・
お礼
型グロブでいけるならと 直接サブルーチンでやってみたらいけました! &Print if defined&Print; あざっす!!