我是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/

10-11 16:52