gpt4 book ai didi

perl - 字符串连接的意外结果

转载 作者:行者123 更新时间:2023-12-04 14:44:33 27 4
gpt4 key购买 nike

我编写了以下代码来从每一行的文件名列表中读取数据,并向其附加一些数据。

open my $info,'<',"abc.txt";
while(<$info>){

chomp $_;
my $filename = "temp/".$_.".xml";

print"\n";
print $filename;
print "\n";

}

close $info;

abc.txt 的内容
file1
file2
file3

现在我期待我的代码给我以下输出
temp/file1.xml
temp/file2.xml
temp/file3.xml

但相反我得到了输出
.xml/file1
.xml/file2
.xml/file3

最佳答案

您的文件有 windows 行结尾 \r\n . chomp删除 \n ( Newline ) 但留下了 \r ( Carriage return )。使用 Data::Dumper Useqq您可以检查变量:

use Data::Dumper;
$Data::Dumper::Useqq = 1;
print Dumper($filename);

这应该输出如下内容:
$VAR1 = "temp/file1\r.xml";

正常打印时会输出 temp/file , 将光标移动到行首并覆盖 temp.xml .

要删除行尾,请替换 chomp和:
s/\r\n$//;

或如 所述@鲍罗丁 :
s/\s+\z//;

它“具有适用于任何行终止符的优点,以及删除尾随空格,这通常是不需要的”

关于perl - 字符串连接的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25384725/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com