[問題] 輸入算符<>

作者: k82817 (ken)   2016-10-07 10:58:50
各位PERL版的大大,大家好
小弟在一個禮拜前剛開始接觸PERL這個程式語言
目前是透過看書+網路自學的方式
在看PERL學習手冊的第六章_基本IO時
有一段再介紹輸入算符,以下為原文
=====================================
例如,有個程式叫做kitty,其內容如下
#!/usr/bin/perl
while(<>){
print $_;}
然後我門執行
kitty file1 file2 file3
此時kitty會一行行地讀入file1的內容,接著file2 file3,直到file3的最後一行讀完,
<>會傳入undef的內容,跳出迴圈。
=======================================
這段話的意思應該是在執行程式後,在Command Line中打入kitty file1 file2 file3後
程式會顯示出file1,file2和file3的內容對吧?
可是我在實際測試時,卻只會重複我的輸入內容,像是這樣
http://imgur.com/a/xUZ0N
完全不會顯示test.txt的內容阿
可是如果我用open()的方式就能夠順利開啟檔案
例如:
open(open_file,"test.txt");
while(<open_file>)
{
print $_;}
難道不能透過command line去指定想要開起哪個檔案嗎?
電腦是用win7,開發環境用Padre,the Perl IDE
作者: rxiang (rxiang)   2016-10-07 13:00:00
你使用 perl string.pl file 看看
作者: abliou (愚者)   2016-10-07 13:00:00
你的執行方式還蠻特殊的,可以說一下你怎麼執行perl?
作者: k82817 (ken)   2016-10-07 13:07:00
我是用Padre裡面的run scriptrx大 還是不行耶,她只會重複我打進去的命令
作者: abliou (愚者)   2016-10-07 13:45:00
原作可能有點誤會一樓的意思,不過如果你用run script我想九成是因為後面的參數沒有進去,因為你說的症狀確實很像我也可以重複你說的症狀 http://imgur.com/a/kCHNM所以建議你如果要CMD傳參數進去,最好的測試方法就是開CMD不要用內建的run script (除非你會調整)
作者: flu (Crazy Rhythm)   2016-10-07 16:08:00
回覆的各位大大請注意看原po 22~24行的原文再加上他圖中兩行兩行一樣的內容,推測原po是在cmd等待stdin的時候打入了大大們以為是用命令列引數傳入的字串( 上面的cmd改成perl.exe會準確一點 )
作者: abliou (愚者)   2016-10-07 16:53:00
是啦!!就是f大說的那意思!
作者: k82817 (ken)   2016-10-07 20:37:00
所以說這個範例的程式碼打出來的話,功能並不是我想的那我原本以為命名提示字元上會顯示TESTTXT的內容
作者: rxiang (rxiang)   2016-10-07 21:03:00
可以顯示阿
作者: k82817 (ken)   2016-10-07 21:09:00
作者: rxiang (rxiang)   2016-10-07 21:10:00
https://goo.gl/4igQG9 我幫你用cmd印出結果
作者: k82817 (ken)   2016-10-07 21:11:00
我後來用Parde裡面的Run command就可以順利讀到檔案了
作者: rxiang (rxiang)   2016-10-07 21:13:00
建議別太依賴IDE 用cmd或是Linux裡也內建Perl可用CLI處理
作者: k82817 (ken)   2016-10-07 21:17:00
謝謝RX大 我想大概是因為用run script的關係所以才沒辦法原來如此 我剛剛用了RX大的方法也成功叫出test.txt檔案因為我長期寫程式都是使用IDE 所以才會搞不清楚怎麼怎麼使用command去呼叫程式
作者: rxiang (rxiang)   2016-10-07 21:24:00
建議學CLI 可避免妳下次學新語言又要重學一個IDE的使用
作者: k82817 (ken)   2016-10-07 23:01:00
好喔

Links booklink

Contact Us: admin [ a t ] ucptt.com