我正在尝试使用chomp()从文件中删除所有换行符。这是代码:
use strict;
use warnings;
open (INPUT, 'input.txt') or die "Couldn't open file, $!";
my @emails = <INPUT>;
close INPUT;
chomp(@emails);
my $test;
foreach(@emails)
{
$test = $test.$_;
}
print $test;
并且input.txt文件的测试内容很简单:
hello.com
hello2.com
hello3.com
hello4.com
我的预期输出是这样的:hello.comhello2.comhello3.comhello4.com
然而,我仍然得到与输入文件相同的内容,请帮忙吗?
谢谢
答案 0 :(得分:5)
如果输入文件是在另一个平台(使用不同的EOL序列的平台)上生成的,chomp可能不会删除所有换行符。例如,如果您在Windows中创建了文本文件(使用\r\n
)并在Mac或Linux上运行该脚本,则只有\n
会被chomp()
编辑,输出仍然会“看起来“就像它有新行。”
如果你知道输入的EOL序列是什么,你可以在$/
之前设置chomp()
。否则,您可能需要执行类似
my @emails = map { s/[\n\r]+$//g; $_ } <INPUT>;