Perl输出会覆盖自己

时间:2011-11-10 15:43:47

标签: perl io newline printf

我的代码循环遍历文件中的行,并尝试使用在开头和结尾添加的内容打印出每一行。

然而,我得到这样的输出:“nominalte cows”。

基本上,行之后的位(标称值)会覆盖它的开头。我知道删除chomp和regex线会阻止这种效果,但是我需要它在没有空格的一行上。我哪里错了?

while ($line = <INPUT>) {

        chomp $line;
        $line =~ s/ //g; 
        printf "\@attribute %s nominal\n", $line;
}

2 个答案:

答案 0 :(得分:12)

您的输入文件可能来自MS Windows,行末尾编码为CR-LF。您也可以s/\r//删除CR。

答案 1 :(得分:6)

您的变量中可能包含\r。尝试使用\s

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

有关\s的含义,请参阅perlre