Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl中应用chomp后,不会打印行_Perl_Scripting_Chomp - Fatal编程技术网

在perl中应用chomp后,不会打印行

在perl中应用chomp后,不会打印行,perl,scripting,chomp,Perl,Scripting,Chomp,在代码中,我试图借助chomp函数删除每行末尾的换行符。但当我尝试在应用chomp后打印该行时,该行不会打印任何内容。它给出以下输出: // Computes R0 = 2 + 3 @2 D=A @3 D=D+A @0 M=D 检查线路: 检查线路: 检查线路: 检查线路: 检查线路: 检查线路: 为什么没有打印行?如果输入有\r\n行结尾,我可以重现您的问题chomp将删除\n,但保留\r,这(在Unix上)将产生将光标移动到行首的效果(不前进到下一行)。由于您的行很短,下一个输出(检查行

在代码中,我试图借助chomp函数删除每行末尾的换行符。但当我尝试在应用chomp后打印该行时,该行不会打印任何内容。它给出以下输出:

// Computes R0 = 2 + 3

@2
D=A
@3
D=D+A
@0
M=D
检查线路: 检查线路: 检查线路: 检查线路: 检查线路: 检查线路:
为什么没有打印行?

如果输入有
\r\n
行结尾,我可以重现您的问题
chomp
将删除
\n
,但保留
\r
,这(在Unix上)将产生将光标移动到行首的效果(不前进到下一行)。由于您的行很短,下一个输出(
检查行
)将完全覆盖它


对不起,博罗丁。因此,解决办法是:

  • 不要在Windows上为Unix Perl脚本创建输入文件,或者如果必须创建,也不要创建输入文件
  • 使用比chomp更强的东西。我总是喜欢使用

    Checking for line: Checking for line: Checking for line: Checking for line: Checking for line: Checking for line: 只要不需要保留尾随空格


  • 您的输入是否有
    \r\n
    行结尾?我认为它没有这种类型的结尾,但它至少不应该在换行符之前打印剩余的字符。请确保print$line在您的两行
    后返回一些内容(不相关-尽量避免使用。这更多的是一个问题而不是好处。)…解决方案是?!我如何知道行是否有结尾。\r\n有没有办法检查它?显然,如果$string=~/\r\n$/
    Checking for line: Checking for line: Checking for line: Checking for line: Checking for line: Checking for line:
    $line =~ s/\s+$//;