2014-03-05 45 views
0

我試圖從STDIN用perl腳本讀取數據。從STDIN管道的perl輸入只能在腳本前使用perl

這裏是我使用的測試腳本:

#!/usr/bin/perl 

foreach $line (<>) 
{ 
    print $line; 
} 

因此,從命令提示符下,I型:

> cat somefile | testscript 
> 

它沒有返回,沒有錯誤。

我然後鍵入以下命令:

> cat somefile | perl testscript 
> *the contents of the file are printed line by line* 

我真的不希望用戶有追加的Perl腳本前,如果我沒有。

感謝您的閱讀。

+0

你可以通過'while(<>)'來解決這個問題,並處理變量'$ _'。 'while(<>)'有很多魔法,如果您在另一個上下文中訪問'<>',則不會發生這種情況。 –

+0

@DovGrobgeld你知道什麼樣的魔法?上面的兩個例子似乎都適用於我 –

+0

你確定在/ usr/bin/perl有perl嗎?有時它位於不同的位置(例如/ bin,/ usr/local/bin),而魔法不起作用。否則,請檢查您的腳本是可執行文件(chmod 755或類似文件) – vogomatix

回答

0

我想你運行兩個不同版本的Perl。 「perl」的輸出是什麼?