返回问题

时间:2010-11-09 10:29:34

标签: perl return-value

sub routine1 { 
    return wantarray ? () : undef;
}

sub routine2 { 
    return;
}

这两个子程序有什么区别吗?

2 个答案:

答案 0 :(得分:5)

没有

来自perldoc -f return

  

如果没有给出EXPR,则返回空   列表上下文中的列表,未定义   标量上下文中的值,和   当然)在虚空中什么都没有   上下文。

答案 1 :(得分:0)

实际上,存在差异......

Perl Critic查看此链接。

  

从失败中返回undef   子程序很常见。但如果   子程序在列表中调用   上下文,显性返回undef;   语句将返回一个元素   包含(undef)的列表。如果那样的话   list随后被放入一个布尔值   上下文来测试失败,然后呢   评估为真。但你可能   希望它是假的。

这很微妙,但可能是一个问题。