2014-08-31 204 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