Лучшие практики: избегайте оболочки, используйте автоматическую обработку ошибок - IPC::System::Simple
.
require IPC::System::Simple;
use autodie qw(:all);
system qw(command --arg1=arg1 --arg2=arg2 -arg3 -arg4);
use IPC::System::Simple qw(runx);
runx [0], qw(command --arg1=arg1 --arg2=arg2 -arg3 -arg4);
# ↑ list of allowed EXIT_VALs, see documentation
Редактировать: следует разглагольствование.
Ответ Евгения включает ссылку на документацию к системе.Там мы можем увидеть смешанный кусок кода, который нужно включать каждый раз, чтобы правильно выполнить system
.Ответ Евгения У показывает только его часть.
Всякий раз, когда мы находимся в такой ситуации, мы объединяем повторяющийся код в модуле.Я провожу параллели с правильной обработкой исключений без излишеств с помощью Try::Tiny
, однако IPC::System::Simple
, поскольку system
сделано правильно , не видел этого быстрого принятия сообществом.Кажется, это нужно повторять чаще.
Итак, используйте autodie
!Используйте IPC::System::Simple
! Спасите себя от скуки, будьте уверены, что вы используете проверенный код.