【问题标题】:Perl chomp does not remove all the newlinesPerl chomp 不会删除所有的换行符
【发布时间】:2011-04-13 19:16:51
【问题描述】:

我有这样的代码:

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

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

【问题讨论】:

  • 下次问问自己,你是否真的认为主流语言的一个 10 年历史的特性真的被破坏了,或者你只是用错了。

标签: perl newline chomp


【解决方案1】:

它删除了 last 换行符。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      或者你可以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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-24
        • 1970-01-01
        • 2012-10-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多