что произойдет, если открыть не удастся? - PullRequest
1 голос
/ 07 января 2011

Я наткнулся на следующий код:

my $pid = open (my $handler, "-|");
unless ($pid) 
{
    #child stuff
    exec $command;
}
else
{
    #parent stuff
}

что произойдет, если неявный ответвление завершится неудачно? Будет ли команда выполнена в любом случае?

1 Ответ

2 голосов
/ 07 января 2011

Да, команда будет выполнена, если код не использует что-то вроде autodie .

open($fh, '-|') возвращает undef при сбое, что ложно, поэтому (не разветвленный) процесс выполнит команду (и, таким образом, завершит себя).

(На несвязанной ноте я и многие другие программисты чувствую, что unless ... else ... - это плохой стиль, но это допустимый Perl.)

...