我有一个抓取标准输入的脚本:
我卡在这个子程序里了。如果我执行以下操作,一切正常:
&process_input
sub process_input {
while(<STDIN>) {
$log_data .= $_;
}
}
当我运行这个脚本时:
myscript.pl -param1=a -param2=b
我卡在这个子程序里了。如果我执行以下操作,一切正常:
echo "" | myscript.pl -param1=a -param2=b
如何确定我是否拥有标准输入?
我本以为while(<STDIN>)
会返回false并停止运行,但我猜它实际上在等待你输入一些内容,这就是为什么它“卡住”的原因。