![](/img/trans.png)
[英]Is there anything in core Perl to auto-chomp lines from “<>” operator?
[英]Lines are not getting printed after application of chomp in perl
#!/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:
為什么沒有打印該行?
如果輸入的行尾有\\r\\n
我可以重現您的問題。 chomp
將刪除\\n
但保留\\r
(在Unix上),其作用是將光標移動到該行的開頭(不前進到下一行)。 由於您的行很短,因此下一個輸出( Checking for line
)將完全覆蓋它。
對不起,鮑羅丁。 所以解決方案是:
使用比chomp
更硬的東西。 我一直喜歡用
$line =~ s/\\s+$//;
只要您不需要保留尾隨空格
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.