Re: [問題] Perl讀檔 in Windows

看板Perl作者 (把青春freeze)時間14年前 (2011/03/19 00:41), 編輯推噓4(402)
留言6則, 4人參與, 最新討論串4/5 (看更多)
※ 引述《StarTouching (撫星)》之銘言: : 找到原因了.... : 首先要先知道 : Windows的 command-line(亦即DOS) 按Enter時會送出\r\n : 但是在txt中, 只有\n (也許整個非Dos環境都是如此) : chomp預設只會篩掉\n, : 所以如果從STDIN讀入(DOS輸入), : 就會仍遺留下\r : 改$/ = "\r\n" : 可讓chomp篩掉\r\n : 但$/也影響到Perl讀取字串的斷點 : 所以txt檔裡面只有\n 沒有\r, : 那Perl就找不到斷點, : 應該要把$/改回"\n" : 結論: 在Windows 需要DOS輸入時, 才需要改 $/ : 不過這狀況其實不常用在實際應用, : 多半在練習或debug才會用, : 但正是因為如此, 初學者才更容易遇到這個問題而不知解決方法 看到這邊就想到大約兩年前的討論串 不過往上爬文已經找不到了 有一種方法叫做slurp 作法就是把$/設為undef 這樣在讀檔就會略過換行符號 把整個檔的內容放到字串中 這種方法用在網頁的tag處理很有用 因為在擷取網頁資料時都是在擷取兩個tag中間的資訊 所以無形中換行符號就變成一種問題 (當然在常規表示式中會有解決方案) Perl中很多預設變數 在更改都會有用處跟用意 不過也要注意後面的影響 ps.我承認我蠻菜的 不過目前我用過的perl 都還沒碰過原po碰到的問題 -- 如果青春注定要向前跑 他媽的...那我的出口在那? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.137.150.96

03/19 13:30, , 1F
我也沒遇過+1 可能我是用原生的perl in M$吧
03/19 13:30, 1F

03/19 16:39, , 2F
我也不知道耶 但是確實改$/="\r\n"就解決
03/19 16:39, 2F

03/19 23:14, , 3F
沒遇過 +1 我用ActivePerl 也有用來讀檔 都沒有\r 的問題
03/19 23:14, 3F

03/20 01:22, , 4F
那樓上你有試過<STDIN>嗎?
03/20 01:22, 4F

03/21 22:28, , 5F
我試過是正常的
03/21 22:28, 5F

03/21 23:34, , 6F
我目前大部分的 code 都是需要從外面 key in filename 的
03/21 23:34, 6F
文章代碼(AID): #1DWuil9I (Perl)
討論串 (同標題文章)
文章代碼(AID): #1DWuil9I (Perl)