Perl输出会覆盖自己

bli*_*zen 8 io perl printf newline

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

但是,我得到这样的输出:"名义上的奶牛".

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

while ($line = <INPUT>) {

        chomp $line;
        $line =~ s/ //g; 
        printf "\@attribute %s nominal\n", $line;
}
Run Code Online (Sandbox Code Playgroud)

cho*_*oba 12

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


too*_*lic 6

你可能有\r变量.尝试使用\s:

$line =~ s/\s//g; 
Run Code Online (Sandbox Code Playgroud)

请参阅perlre的含义\s.