如果打开失败会发生什么情况?

问题描述:

我碰到下面的代码:如果隐含叉失败如果打开失败会发生什么情况?

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

会发生什么?该命令是否会被执行?

是的命令将被执行,除非代码使用类似autodie的东西。

open($fh, '-|')返回undef失败,这是错误的,所以(不受限制的)进程将执行该命令(从而自行终止)。

(在一个不相关的说明,我和许多其他程序员,觉得unless ... else ...是坏的风格,但它有效的Perl)。