1

我正在尝试使用 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

但是,我仍然得到与输入文件相同的内容,请问有什么帮助吗?

谢谢

4

1 回答 1

5

如果输入文件是在不同平台(使用不同 EOL 序列的平台)上生成的,则chomp可能不会删除所有换行符。例如,如果您在 Windows(使用\r\n)中创建文本文件并在 Mac 或 Linux 上运行脚本,则只有ed\n会被chomp()编辑,并且输出仍然“看起来”像有换行符。

如果你知道输入的 EOL 序列是什么,你可以设置$/before chomp()。否则,您可能需要执行类似的操作

my @emails = map { s/[\n\r]+$//g; $_ } <INPUT>;
于 2014-01-24T04:20:27.823 回答