Я пытаюсь написать скрипт для переименования файлов на основе заданного списка. Чтобы проверить, что список прочитан правильно, у меня есть:

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 ответ1

0

Вместо символов окончания строки ваш скрипт создает символы "\r" которые перемещают курсор в крайнее левое положение, но не продвигают строку. Поэтому вся информация перезаписывается сама снова и снова. Я не могу представить, как это может произойти с литералом "\n" в коде - вы уверены, что код, который вы разместили, производит вывод? На какой ОС вы работаете? Можете ли вы опубликовать hexdump входного файла?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .