うん、さまざまな人々がこの異なる方法にどのように答えているか興味深い。 mkとDaniel Foneは、コマンドの標準出力を表示/操作したいと解釈しています(いずれのソリューションもstderr fwiwをキャプチャしません)。 Ruddが近づいたと思う。 Ruddの応答でできることの1つは、組み込みのsystem()コマンドを独自のバージョンで覆い、execute()コマンドを使用するために既存のコードを書き直す必要がないようにすることです。ラッドのポストからの彼の実行()サブを使用して
、あなたのコードの上部に次のようなものかもしれない:
if ($DEBUG) {
*{"CORE::GLOBAL::system"} = \&{"main::execute"};
}
を、私はそれが動作すると思いますが、私は、これはブードゥー教です認めざるを得ない、それがされています私はこのコードを書いてからしばらくしています。
# importing into either the calling or global namespace _must_ be
# done from import(). Doing it elsewhere will not have desired results.
delete($opts{handle_system});
if ($do_system) {
if ($do_system eq 'local') {
*{"$callpkg\::system"} = \&{"$_package\::system"};
} else {
*{"CORE::GLOBAL::system"} = \&{"$_package\::system"};
}
}
グローバル 'system'コマンドを交換して大きな問題は' system'がで複製することができない複雑なプロトタイプを持っているということですユーザーが指定したプロトタイプシステム。その結果、 'system'をあなたのカスタムバージョンに置き換えると、いくつかのコードが機能しなくなります。 – cjm