Perl 读取文件仅返回部分行

Perl 读取文件仅返回部分行

我正在尝试编写一个脚本来根据给定的列表重命名文件。为了测试以确保列表读取正确,我进行了以下操作:

print("start\n");
open(READFILE, "<prune.txt") || die "Couldn't open file";
print("file open\n");
while ($curline = <READFILE>){

print "$curline\n";
}
close (READFILE);

如果我的列表文件是

P_4
IMG_0531
PICT0009
IMG_0416
RAY HASSMAN GROUP 015
P_5

那么我的输出是

P_5 HASSMAN GROUP 015

我为什么会遇到这种奇怪的混乱情况?

此处询问的是我的输入文件的十六进制转储

0000: 50 5F 34 0D 49 4D 47 5F   P_4¬IMG_
0008: 30 35 33 31 0D 50 49 43   0531¬PIC
0010: 54 30 30 30 39 0D 49 4D   T0009¬IM
0018: 47 5F 30 34 31 36 0D 52   G_0416¬R
0020: 41 59 20 48 41 53 53 4D   AY HASSM
0028: 41 4E 20 47 52 4F 55 50   AN GROUP
0030: 20 30 31 35 0D 50 5F 35    015¬P_5

我正在使用 Mac 10.9.2 build 13c39

答案1

您的脚本生成的不是行结束符,而是"\r"将光标移动到最左边的位置,但不会前进一行。因此,所有信息都在一遍又一遍地覆盖自身。我无法想象"\n"代码中的文字怎么会发生这种情况 - 您确定您发布的代码会产生输出吗?您使用的是哪种操作系统?您可以发布输入文件的十六进制转储吗?

相关内容