簡體   English   中英

在perl中應用chomp后沒有打印行

[英]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 )將完全覆蓋它。


對不起,鮑羅丁。 所以解決方案是:

  1. 不要在Windows上為Unix Perl腳本創建輸入文件,或者如果您必須
  2. 使用比chomp更硬的東西。 我一直喜歡用

     $line =~ s/\\s+$//; 

    只要您不需要保留尾隨空格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM