Ваша ошибка:
"No such file or directoryerDocuments/coastalalglive/Account2805"
Кажется, подразумевается, что существует \r
, который не был удален вашим chomp
. Это произойдет при передаче файлов между различными файловыми системами, где файл содержит \r\n
в конце строки. Строка реальной ошибки будет выглядеть примерно так:
/opt/CollectMinderDocuments/coastalalglive/Account2805\r: No such file or directory
Попробуйте вместо этого изменить chomp $line
на $line =~ s/[\r\n]+$//;
и посмотрите, работает ли это.
Также:
my $temp = "mv * /opt/CollectMinderDocuments/coastalalglive/Closed/$smallerStr/";
system("$temp");
Это очень неправильно. Первый не каталогный файл в этом цикле переместит все оставшиеся файлы (включая dirs? Не уверен, если mv
делает это по умолчанию). Следовательно, последующие итерации подпрограммы не найдут ничего для перемещения, что также приведет к ошибке типа «Не найдено». Хотя и не тот, который захвачен perl, так как вы используете system
вместо File::Copy::move
. E.g.:
move $_, "/opt/CollectMinderDocuments/coastalalglive/Closed/$smallerStr/" or die $!;