IPC ::运行失败 - 在harness()参数3中出现意外的SCALAR

时间:2013-10-25 19:24:01

标签: perl ipc

我尝试运行简单的脚本

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”命令使用)通过big“if”语句解析循环中的所有传入参数。但是在这个语句中没有sclar值的规则,因此\ $ out会破坏命令。

1 个答案:

答案 0 :(得分:3)

IPC::Run::run的第一个参数应该是数组引用,而不是标量。所以这有效:

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

有点难以理解,但在IPC::Run::harness子例程中,当第一个参数是数组引用时,它会设置一些变量和标志,以便正确处理其余参数。