什么' //' Perl意味着什么?

时间:2013-04-11 14:54:12

标签: perl logical-operators

我在很多Perl书中搜索但我找不到答案。我有这个代码,我认为它的作用是将param的票分配给$ ticket if if如果不存在,则分配0。

my $ticket   = $params->{ticket} // 0;

2 个答案:

答案 0 :(得分:9)

//表示defined-or$ticket如果已定义,则为$params->{ticket},否则为0。

  

虽然它在C中没有直接的等价物,但Perl的//运算符与它的C风格或。实际上,它与||完全相同,只是它测试左手边的定义而不是真实。因此,EXPR1 // EXPR2如果已定义则返回EXPR1的值,否则返回EXPR2的值。

那是added in 5.10

在上面的代码中,$params->{ticket}仍然可能包含垃圾,因此在使用之前请确保该值符合预期的模式。

答案 1 :(得分:4)

Perl documentation说:

" EXPR1 // EXPR2如果定义则返回EXPR1的值,否则返回EXPR2的值。"

它类似于逻辑或测试定义。