2

簡単なスクリプトを実行しようとしています

use IPC::Run qw (run timeout); 
run "date", \$in, \$out, \$err, timeout( 10 ) or die "err: $?";
print "Date is $out \n";

しかし、それはエラーで失敗します:

Unexpected SCALAR(0x1e52f80) in harness() parameter 3 at t.pl line 2
Unexpected SCALAR(0x1e52f08) in harness() parameter 4 at t.pl line 2

私は perl v5.14 と v5.10 を使用しており、別のサーバーを試しています。プロシージャ IPC::Run::harness (「run」コマンドで使用) は、大きな「if」ステートメントによって、ループ内のすべての着信引数を解析します。ただし、このステートメントではスカラー値のルールがないため、\$out はコマンドを中断します。

4

1 に答える 1

4

への最初の引数IPC::Run::runは、スカラーではなく、配列参照でなければなりません。したがって、これは機能します:

run ["date"], \$in, \$out, \$err, timeout( 10 ) or die "err: $?";

従うのは少し難しいですが、IPC::Run::harnessサブルーチンでは、最初の引数が配列参照の場合、いくつかの変数とフラグを設定して、残りの引数を正しく処理できるようにします。

于 2013-10-25T19:30:33.017 に答える