Perl输出会覆盖自身

Perl输出会覆盖自身,perl,io,newline,printf,Perl,Io,Newline,Printf,我有一段代码,它在文件中的行中循环,并尝试打印出每一行的开头和结尾都添加了一些内容 然而,我得到的输出是这样的:“名义上的奶牛” 基本上,行(标称)后的位覆盖它的开头。我知道删除chomp和regex行会阻止这种效果,但我需要它在一行中没有空格。我哪里做错了 while ($line = <INPUT>) { chomp $line; $line =~ s/ //g; printf "\@attribute %s nominal\n

我有一段代码,它在文件中的行中循环,并尝试打印出每一行的开头和结尾都添加了一些内容

然而,我得到的输出是这样的:“名义上的奶牛”

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

while ($line = <INPUT>) {

        chomp $line;
        $line =~ s/ //g; 
        printf "\@attribute %s nominal\n", $line;
}
while($line=){
chomp$行;
$line=~s///g;
printf“\@属性%s标称\n”,$line;
}

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

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

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

有关
\s

的含义,请参阅
@attribute
的元素是什么?抱歉,没有找到转义字符,它是纯文本(\@att…)我认为答案应该是自包含的。为什么不简单地解释一下
\s
的含义以及更多信息的链接?为什么你要去掉所有的空白来去掉
\r
(回车)<代码>$Line=~s/\r//g;也就是说,choroba的答案可能是根本原因(相同的解决方案)太好了!这正是问题所在,我以后会记得:)(我在解决方案中使用了$line=~s/\r//g;)。干杯伟大的这正是问题所在,我以后会记得:)(我在解决方案中使用了$line=~s/\r//g;)。干杯