Perl 拆分字段解析问题

Perl 拆分字段解析问题,perl,parsing,text,Perl,Parsing,Text,我正在逐行阅读一个txt文件。列通过“;”分隔符分隔,文件类似于下面的文件 text;10.1.1.1;description text;10.1.1.2;description ... text;10.1.1.90;description Perl代码: @splitted=split(";",$line) $description=$splitted[2]; 在阅读最后一个字段(描述)时,我面临着一种奇怪的情况。 这个字段没有正确读取,我在进行文本比较时可以看到问题,但在打印$descr

我正在逐行阅读一个txt文件。列通过“;”分隔符分隔,文件类似于下面的文件

text;10.1.1.1;description
text;10.1.1.2;description
...
text;10.1.1.90;description
Perl代码:

@splitted=split(";",$line)
$description=$splitted[2];
在阅读最后一个字段(描述)时,我面临着一种奇怪的情况。 这个字段没有正确读取,我在进行文本比较时可以看到问题,但在打印$description时更明显

如果我

(我使用:作为分隔符,以查看字符串前后是否有空格),我可以看到实际字符串甚至会占用引号,或者该短语之前的任何字符串:

字面上:

而不是:

"The value of description is :abcdef:" 
我明白了

"The value of descripabcdef"
通过在行尾添加分隔符来解决问题:即:

text;10.1.1.1;description;
text;10.1.1.2;description;
...
text;10.1.1.90;description;
我希望我能把这一点讲清楚。 非常感谢,,
Francesco

看起来文件是在Mac上创建的,行尾字符是单个
\r

您可能没有删除它(
chomp
在Perl中)。发生的情况是,输出已完成,但嵌入的
\r
会导致后面的文本覆盖前面的输出

另一种可能是该文件是在Windows上创建的(行尾为
\r\n
),而您是在行尾仅为
\n
的系统上处理该文件的。在这种情况下,
chomp
将删除
\n
,但将
\r
保留在行尾

在拆分行之前,应删除行中所有尾随空格。即

s/\s+$//

谢谢你,吉姆,我确实用了chomp,在eniter行和single/string上都用了。没什么变化。是的,它确实有效。伟大的直觉。所以这个Reg-Ex在这行的末尾加工一个或多个空格,对吗?再次非常感谢。是的,这是正确的,将匹配的字符串替换为零。
s/\s+$//