Perl chomp不会删除所有换行符

问题描述

| 我有这样的代码
#!/usr/bin/perl
use strict;
use warnings;
open(IO,\"<source.html\");
my $variable = do {local $/; <IO>};
chomp($variable);
print $variable;
但是,当我打印它时,它还有换行符吗?     

解决方法

它删除最后一个换行符。 由于您要遍历整个文件,因此必须进行正则表达式替换才能消除它们:
$variable =~ s/\\n//g;
    ,Chomp仅从字符串的末尾删除换行符(实际上是
$/
的当前值,但是在您的情况下,这是换行符)。要删除所有换行符,请执行以下操作:
$variable =~ y/\\n//d;
    ,或者,您在阅读以下内容时可以在每一行中“ 4”行:
#!/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;