作者k82817 (ken)
看板Perl
標題[問題] 輸入算符<>
時間Fri Oct 7 10:58:50 2016
各位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://webptt.com/m.aspx?n=bbs/Perl/M.1475809133.A.D4B.html
※ 編輯: k82817 (125.227.12.127), 10/07/2016 11:08:09
1F:→ rxiang: 你使用 perl string.pl file 看看 10/07 13:00
2F:推 abliou: 你的執行方式還蠻特殊的,可以說一下你怎麼執行perl? 10/07 13:00
3F:→ k82817: 我是用Padre裡面的run script 10/07 13:07
4F:→ k82817: rx大 還是不行耶,她只會重複我打進去的命令 10/07 13:25
5F:推 abliou: 原作可能有點誤會一樓的意思,不過如果你用run script我想 10/07 13:45
6F:→ abliou: 九成是因為後面的參數沒有進去,因為你說的症狀確實很像 10/07 13:46
8F:→ abliou: 所以建議你如果要CMD傳參數進去,最好的測試方法就是開CMD 10/07 13:50
9F:→ abliou: 不要用內建的run script (除非你會調整) 10/07 13:50
10F:→ flu: 回覆的各位大大請注意看原po 22~24行的原文 10/07 16:08
11F:→ flu: 再加上他圖中兩行兩行一樣的內容,推測原po是在cmd等待stdin 10/07 16:08
12F:→ flu: 的時候打入了大大們以為是用命令列引數傳入的字串 10/07 16:09
13F:→ flu: ( 上面的cmd改成perl.exe會準確一點 ) 10/07 16:16
14F:推 abliou: 是啦!!就是f大說的那意思! 10/07 16:53
15F:→ k82817: 所以說這個範例的程式碼打出來的話,功能並不是我想的那 10/07 20:37
16F:→ k82817: 我原本以為命名提示字元上會顯示TESTTXT的內容 10/07 20:40
17F:→ rxiang: 可以顯示阿 10/07 21:03
20F:→ k82817: 我後來用Parde裡面的Run command就可以順利讀到檔案了 10/07 21:11
21F:→ rxiang: 建議別太依賴IDE 用cmd或是Linux裡也內建Perl可用CLI處理 10/07 21:13
22F:→ k82817: 謝謝RX大 我想大概是因為用run script的關係所以才沒辦法 10/07 21:17
23F:→ k82817: 原來如此 我剛剛用了RX大的方法也成功叫出test.txt檔案 10/07 21:20
24F:→ k82817: 因為我長期寫程式都是使用IDE 所以才會搞不清楚怎麼 10/07 21:21
25F:→ k82817: 怎麼使用command去呼叫程式 10/07 21:22
26F:→ rxiang: 建議學CLI 可避免妳下次學新語言又要重學一個IDE的使用 10/07 21:24
27F:→ k82817: 好喔 10/07 23:01