Re: [問題] 駱馬書第三章第三題

看板Perl作者 (What?)時間16年前 (2009/05/12 03:17), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《Shickerd (希)》之銘言: : 大家好,我是perl的初學者,在寫駱馬書第三題時碰到一個因難。 : 本題的解答程式碼如下: : chomp(@lines = <STDIN>); : @sorted = sort @lines; : print "@sorted\n"; : 當我在命令列下執行這個檔案時,我輸入下列字串: : ddd : aa : zzz : Ctrl-Z : 然後會出現 : zzz : 這與原先預想的不同。 : 當我把chomp給去掉之後(也就是變成@lines=<STDIN>),再次執行這個檔案。 : 結果就變成 : aa : ddd : zzz : 這與預想的差不多。 : 我想請問究竟為什麼,加上chomp之後,只會印出串列中的最後一個值? : 謝謝! chomp 會移除字尾與特殊變數 $/ 相符的字串 (預設為 "\n") 我猜你是使用 ActivePerl:在 MS Windows 下換行符號為 "\r\n" 所以 chomp 只刪除 "\n",卻留下了 "\r" (歸位字元) 這會使游標移至行首,但是並沒有換行, 使得下一個輸出值會覆蓋掉原本的輸出的字串 你可以利用 $/ = "\r\n" 同時刪除 "\r" 和 "\n" 字元 或是不用 chomp 直接使用 regex: $_ =~ s/\r?\n$// for @lines; 來刪除每一行的換行符號 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.230.108

05/19 16:58, , 1F
喔,原來如此,我了解了,謝謝你^^
05/19 16:58, 1F
文章代碼(AID): #1A27cpVK (Perl)
討論串 (同標題文章)
文章代碼(AID): #1A27cpVK (Perl)