我是Perl的新手。我仍在尝试学习它的语法。我见过有人在Perl中使用//
和//=
,但是我在网络上找不到任何可以解释这一点的资源。
有人可以向我解释外行人的确切含义吗?它实际上是做什么的?
最佳答案
从perldoc perlop:
逻辑定义或
尽管在C语言中没有直接等效项,但Perl的//
运算符与其C样式或相关。实际上,它与||
完全相同,除了它测试左侧的定义而不是其真实性。因此,如果已定义,EXPR1 // EXPR2
将返回EXPR1
的值,否则将返回EXPR2
的值。 (EXPR1
在标量上下文中求值,EXPR2
在//
本身上下文中求值)。通常,这与defined(EXPR1) ? EXPR1 : EXPR2
相同(除了三元运算符形式可以用作左值,而EXPR1 // EXPR2
不能用作左值)。这对于提供变量的默认值非常有用。如果您实际上想测试是否已定义$a
和$b
中的至少一项,请使用defined($a // $b)
。
所以:
$NODEFINED // $DEFINED # will return the value of defined
$DEFINED1 // $DEFINED2 # will return the value of $DEFINED1
$a //= $b;
是以下内容的简写:
$a = $a // $b;
因此,只有在 undefined
$a
时,$b
才会设置为$a
值。$a //= 42;
格式可用于为 undefined 的变量设置默认值。关于perl -//和//=在Perl中做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18093096/