Ваш system
вызов запускает отдельный процесс, в то время как собственная rmdir
Perl будет вызывать встроенную функцию C в контексте процесса Perl.Оба метода в итоге выполняют одни и те же системные вызовы, но открытие нового процесса менее эффективно. *
Лучше всего использовать собственные функции Perl (например, rmdir
): они переносимы, и вы нене нужно беспокоиться о интерпретации кодов выхода оболочки, экранировании метасимволов в именах файлов для предотвращения угроз безопасности и т. д.
*system
создаст дополнительный процесс sh
, если ваша команда содержит каналы, перенаправление ввода / вывода,&&
и т. Д. Это не относится к вашему случаю, но может сделать параметр system
еще медленнее.