Re: [問題] 駱馬書第三章第三題
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章