Perl chomp不会删除所有换行符

时间:2011-04-13 19:16:51

标签: perl newline chomp

我的代码如下:

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

但是,当我打印它时,它仍然有换行符?

3 个答案:

答案 0 :(得分:17)

删除 last 换行符。

由于你在整个文件中啜饮,你将不得不进行正则表达式替换以摆脱它们:

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

答案 1 :(得分:7)

Chomp只从字符串末尾删除换行符(实际上是$/的当前值,但这是你的情况下的换行符)。要删除所有换行符,请执行以下操作:

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

答案 2 :(得分: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;