Перемещение файла в другой каталог в Perl? - PullRequest
2 голосов
/ 01 июля 2011
rename $ARGV[0], $ARGV[1] or warn "rename fails: $!\n";

Когда я запускаю ./programe file.txt dir/, это всегда дает сбой.

Что здесь не так?

Ответы [ 3 ]

7 голосов
/ 01 июля 2011

Из perldoc для переименования:

Поведение этой функции сильно зависит от вашего внедрение системы. Например, это обычно не будет работать через границы файловой системы, даже если система mv команда иногда компенсирует это. Другие ограничения укажите, работает ли он с каталогами, открытыми файлами или предварительно существующие файлы. Проверьте perlport и либо переименуйте (2) man-страница или эквивалентная системная документация для деталей.

Для независимой от платформы функции перемещения посмотрите на Файл :: Копировать модуль.

Поэтому используйте File :: Copy :: move .

5 голосов
/ 01 июля 2011

переименование ожидает полный целевой путь, а не просто каталог.Попробуйте:

./progname file.txt dir/file.txt

Было бы неплохо, если бы вы сказали, с какой ошибкой она не справилась ...

4 голосов
/ 01 июля 2011

rename меняет имя файла, а это не то, что вы пытаетесь сделать. Вы, вероятно, хотите использовать функцию move из File::Copy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...