Функция, которую вы ищете, находится в File :: Copy:
use File::Copy 'move';
move $x, $y or WriteLog ("move $x, $y failed: $!");
File :: Copy является частью стандартного дистрибутива самого Perl.
Конечно, вы можете использовать команду system ("mv ...")
, чтобы сделать то же самое. Преимущества File :: Copy:
- Он будет работать в разных операционных системах, что может быть необходимо, если вы пишете что-то для использования другими людьми;
- Он не подвергает вас дырам в безопасности из-за передачи данных в оболочку или из-за ошибок переносимости, потому что путь к файлу содержит метасимволы и пробелы, такие как
/Library/Application Support/Hi I'm On A Mac/
;
- Это быстрее: см. Шверновская паста . Стоимость
system
затопляет все остальное. File::Copy::move
и rename
имеют примерно одинаковую стоимость, поэтому вы также можете использовать более безопасный move
, который работает в файловых системах.