プロが教える店舗&オフィスのセキュリティ対策術

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

宜しくお願い致します。

A 回答 (2件)

じゃあ最強の手段, 型グロブに対する参照でどうだ.


if (defined *Print{CODE})
とか (Print が foo パッケージで定義されているなら)
if (defined *{$foo::{Print}}{CODE})
とか.
    • good
    • 0
この回答へのお礼

型グロブでいけるならと
直接サブルーチンでやってみたらいけました!

&Print if defined&Print;

あざっす!!

お礼日時:2009/07/29 18:59

eval でいけるか?

    • good
    • 0
この回答へのお礼

evalで実行時もsyslogにエラーメッセージが残ってしまう為、それを回避したいと思い、予めサブルーチンが存在するかをチェックしたかったのです。

ハッシュでは、キーが存在するかをチェックする関数がありますが
サブルーチンそのものが存在するかを確かめる為の関数ってないのでしょうか・・・。

ぐぐっても見つからないので、質問しております

で、とりあえず関数を実行する前に
open(STDERR, ">/dev/null");
としてエラーを表示させないようにはしてみているのですが・・・

お礼日時:2009/07/29 16:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!