2014-08-31 154 views
0

为什么下面的perl脚本不打印任何东西?Perl打开没有运行shell命令

if (open(my $fh, "| (while read LINE; do echo \$LINE; done)")) { 
    print $fh "test"; 
    close($fh); 
} 

sh,如果我跑echo 'test' | (while read LINE; do echo \$LINE; done)我希望有test打印出来。

+0

添加“\ n”来打印,像这样的'打印$ FH“测试\ n” '; – 2014-08-31 17:37:53

+0

谢谢,发布它作为答案,我会接受它。 – simonzack 2014-08-31 17:38:50

+0

注意,'打开我的$ fh,“| - ”,“..”'因为perl支持三个args'open'。 ('' - |“'rad to pipe) – 2014-08-31 17:49:53

回答

1

添加“\ n”来打印,因为read正在寻找一整行,像这样

print $fh "test\n"; 
+0

最好''fh-> autoflush',这样你就可以打印你想要的东西了 – Borodin 2014-08-31 22:47:47

+1

@Borodin,事情就是'test' +换行符就是他想要的打印。 '$ fh-> autoflush'在这里根本没有帮助。 – ikegami 2014-08-31 23:38:16

+0

@ikegami我已经删除了错误的解释部分 - 谢谢你指出。 – 2014-09-01 06:12:12