看板 Perl 關於我們 聯絡資訊
各位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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.12.127 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1475809133.A.D4B.html ※ 編輯: k82817 (125.227.12.127), 10/07/2016 11:08:09
rxiang: 你使用 perl string.pl file 看看 10/07 13:00
abliou: 你的執行方式還蠻特殊的,可以說一下你怎麼執行perl? 10/07 13:00
k82817: 我是用Padre裡面的run script 10/07 13:07
k82817: rx大 還是不行耶,她只會重複我打進去的命令 10/07 13:25
abliou: 原作可能有點誤會一樓的意思,不過如果你用run script我想 10/07 13:45
abliou: 九成是因為後面的參數沒有進去,因為你說的症狀確實很像 10/07 13:46
abliou: 我也可以重複你說的症狀 http://imgur.com/a/kCHNM 10/07 13:49
abliou: 所以建議你如果要CMD傳參數進去,最好的測試方法就是開CMD 10/07 13:50
abliou: 不要用內建的run script (除非你會調整) 10/07 13:50
flu: 回覆的各位大大請注意看原po 22~24行的原文 10/07 16:08
flu: 再加上他圖中兩行兩行一樣的內容,推測原po是在cmd等待stdin 10/07 16:08
flu: 的時候打入了大大們以為是用命令列引數傳入的字串 10/07 16:09
flu: ( 上面的cmd改成perl.exe會準確一點 ) 10/07 16:16
abliou: 是啦!!就是f大說的那意思! 10/07 16:53
k82817: 所以說這個範例的程式碼打出來的話,功能並不是我想的那 10/07 20:37
k82817: 我原本以為命名提示字元上會顯示TESTTXT的內容 10/07 20:40
rxiang: 可以顯示阿 10/07 21:03
k82817: http://imgur.com/a/X2JYV 10/07 21:09
rxiang: https://goo.gl/4igQG9 我幫你用cmd印出結果 10/07 21:10
k82817: 我後來用Parde裡面的Run command就可以順利讀到檔案了 10/07 21:11
rxiang: 建議別太依賴IDE 用cmd或是Linux裡也內建Perl可用CLI處理 10/07 21:13
k82817: 謝謝RX大 我想大概是因為用run script的關係所以才沒辦法 10/07 21:17
k82817: 原來如此 我剛剛用了RX大的方法也成功叫出test.txt檔案 10/07 21:20
k82817: 因為我長期寫程式都是使用IDE 所以才會搞不清楚怎麼 10/07 21:21
k82817: 怎麼使用command去呼叫程式 10/07 21:22
rxiang: 建議學CLI 可避免妳下次學新語言又要重學一個IDE的使用 10/07 21:24
k82817: 好喔 10/07 23:01