我在很多Perl书中搜索但我找不到答案。我有这个代码,我认为它的作用是将param的票分配给$ ticket if if如果不存在,则分配0。
my $ticket = $params->{ticket} // 0;
答案 0 :(得分:9)
//
表示defined-or。 $ticket
如果已定义,则为$params->{ticket}
,否则为0。
虽然它在C中没有直接的等价物,但Perl的
//
运算符与它的C风格或。实际上,它与||
完全相同,只是它测试左手边的定义而不是真实。因此,EXPR1 // EXPR2
如果已定义则返回EXPR1
的值,否则返回EXPR2
的值。
在上面的代码中,$params->{ticket}
仍然可能包含垃圾,因此在使用之前请确保该值符合预期的模式。
答案 1 :(得分:4)