2011-04-13 30 views
2

我有這樣的代碼:Perl的格格不會刪除所有的換行符

#!/usr/bin/perl 
use strict; 
use warnings; 
open(IO,"<source.html"); 
my $variable = do {local $/; <IO>}; 
chomp($variable); 
print $variable; 

然而,當我打印出來,它仍然有換行符?

+19

下一次問自己,如果你真的認爲一個主流語言的10歲的功能實在是壞,或者如果你只是使用它錯了。 – jiggy 2011-04-13 19:23:45

+3

['select' is not broken](http://www.google.com/search?q=select+isn%27t+broken) – 2011-04-13 20:57:45

回答

17

它消除了最後換行符。

既然你在整個文件啜,你將不得不做一個正則表達式替換,以擺脫他們:

$variable =~ s/\n//g; 
6

Chomp只從字符串末尾刪除一個換行符(實際上,當前值爲$/,但這是換行符)。要刪除所有換行符,這樣做:

$variable =~ y/\n//d; 
2

或者你可以chomp每一行,你在讀它:

#!/usr/bin/perl 

use strict; 
use warnings; 

open my $io, '<', 'source.html'; 
my $chomped_text = join '', map {chomp(my $line = $_); $line} <$io>; 

print $chomped_text; 
+0

and downvote for ...? – 2011-04-14 01:10:11

相關問題