rename $ARGV[0], $ARGV[1] or warn "rename fails: $!\n";
Когда я запускаю ./programe file.txt dir/, это всегда дает сбой.
./programe file.txt dir/
Что здесь не так?
Из perldoc для переименования:
Поведение этой функции сильно зависит от вашего внедрение системы. Например, это обычно не будет работать через границы файловой системы, даже если система mv команда иногда компенсирует это. Другие ограничения укажите, работает ли он с каталогами, открытыми файлами или предварительно существующие файлы. Проверьте perlport и либо переименуйте (2) man-страница или эквивалентная системная документация для деталей. Для независимой от платформы функции перемещения посмотрите на Файл :: Копировать модуль.
Поведение этой функции сильно зависит от вашего внедрение системы. Например, это обычно не будет работать через границы файловой системы, даже если система mv команда иногда компенсирует это. Другие ограничения укажите, работает ли он с каталогами, открытыми файлами или предварительно существующие файлы. Проверьте perlport и либо переименуйте (2) man-страница или эквивалентная системная документация для деталей.
Для независимой от платформы функции перемещения посмотрите на Файл :: Копировать модуль.
Поэтому используйте File :: Copy :: move .
переименование ожидает полный целевой путь, а не просто каталог.Попробуйте:
./progname file.txt dir/file.txt
Было бы неплохо, если бы вы сказали, с какой ошибкой она не справилась ...
rename меняет имя файла, а это не то, что вы пытаетесь сделать. Вы, вероятно, хотите использовать функцию move из File::Copy
rename
move
File::Copy