perl 祝福胖逗号

use*_*829 2 perl comma bless difference

我知道 perl bless 可以接收 1 或 2 个参数,如perlbless 中所述。但是,我不明白下面代码中带有粗逗号的祝福是做什么的?是一样的bless \$value,$class;吗?

# Construct the tie.
sub TIESCALAR { 
    my $class = shift;
    my $value = shift || 0;

    bless \$value => $class;
}
Run Code Online (Sandbox Code Playgroud)

JRF*_*son 5

胖逗号只是另一种写法comma。你可以看到这个:

perl -MO=Deparse -e 'bless \$value => $class'
bless \$value, $class;
-e syntax OK
Run Code Online (Sandbox Code Playgroud)

这里也可以找到一个有趣的讨论。

  • 这并不完全正确,尽管在这种情况下已经足够了。与普通的不同,如果需要,**胖逗号 *自动引用*其 LHS 裸字操作数**。注意这两个调用的输出有多么不同:`sub show_pair { my($this, $that) = @_; 打印 "$this is $that.\n" } show_pair(time, time); show_pair(time => time);` 产生 `1402245177 是 1402245177。时间是 1402245177。` 还有更多奇特的情况。 (2认同)