为什么chomp()在这种情况下不起作用?

she*_*nsw 1 perl chomp

我正在尝试使用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;
Run Code Online (Sandbox Code Playgroud)

并且input.txt文件的测试内容很简单:

    hello.com
    hello2.com
    hello3.com
    hello4.com
Run Code Online (Sandbox Code Playgroud)

我的预期输出是这样的:hello.comhello2.comhello3.comhello4.com

但是,我仍然得到与输入文件相同的内容,请帮忙吗?

谢谢

moj*_*ojo 5

如果输入文件是在另一个平台(使用不同的EOL序列的平台)上生成的,则chomp可能不会剥离所有换行符.例如,如果您在Windows(使用\r\n)中创建了文本文件并在Mac或Linux上运行该脚本,则\n只会获得该文本,chomp()并且输出仍然"看起来"就像它有换行符一样.

如果你知道输入的EOL序列是什么,你可以$/在之前设置chomp().否则,你可能需要做类似的事情

my @emails = map { s/[\n\r]+$//g; $_ } <INPUT>;
Run Code Online (Sandbox Code Playgroud)