#!/usr/bin/perl
use warnings;
use Switch;
while (<>) {
next if /^\s*\/\//;
next if /^\s*$/;
my $line="$_";
chomp($line);
print $line;
print "Checking for line:\n$line";
}
这是我从命令行获取输入文件的代码。它将以下文件作为输入:
// Computes R0 = 2 + 3
@2
D=A
@3
D=D+A
@0
M=D
在代码中,我试图在chomp函数的帮助下删除每行末尾的换行符。但是当我尝试在应用chomp之后打印该行时,它不会为该行打印任何内容。它给出了以下输出:
Checking for line: Checking for line: Checking for line: Checking for line: Checking for line: Checking for line:
为什么不打印线?
答案 0 :(得分:2)
如果输入有\r\n
行结尾,我可以重现您的问题。 chomp
将删除\n
,但保留\r
,这将(在Unix上)将光标移动到行的开头(不会前进到下一行)。由于您的行很短,下一个输出(Checking for line
)会完全覆盖它。
对不起,鲍罗丁。所以解决方案是:
使用强于chomp
的内容。我总是喜欢用
$line =~ s/\s+$//;
只要您不需要保留尾随空格