Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 这里的双正斜杠是什么意思?_Perl - Fatal编程技术网

Perl 这里的双正斜杠是什么意思?

Perl 这里的双正斜杠是什么意思?,perl,Perl,我是Perl新手,在工作中遇到了这段代码,我搜索了一会儿,但没有找到答案。有人能用简单的英语解释一下它的功能吗?谢谢 my $abc = delete $args{ 'abc' } // croak 'some information!'; 在此页面: 尽管Perl的/操作符在C中没有直接的等价物,但它与C风格的或相关。事实上,它与| |完全相同,只是它测试左手的定义性,而不是它的真值。因此,EXPR1//EXPR2返回EXPR1的值(如果已定义),否则返回EXPR2的值。(EXPR1在标量上

我是Perl新手,在工作中遇到了这段代码,我搜索了一会儿,但没有找到答案。有人能用简单的英语解释一下它的功能吗?谢谢

my $abc = delete $args{ 'abc' } // croak 'some information!';
在此页面:

尽管Perl的
/
操作符在C中没有直接的等价物,但它与C风格的
相关。事实上,它与
| |
完全相同,只是它测试左手的定义性,而不是它的真值。因此,
EXPR1//EXPR2
返回
EXPR1
的值(如果已定义),否则返回
EXPR2
的值。(
EXPR1
在标量上下文中计算,
EXPR2
/
本身的上下文中计算)。通常,这与
defined(EXPR1)的结果相同吗?EXPR1:EXPR2
(除了三元运算符形式可以用作左值,而
EXPR1//EXPR2
不能,EXPR1将只计算一次)。这对于为变量提供默认值非常有用。如果您确实想测试是否至少定义了
$a
$b
中的一个,请使用
已定义($a/$b)

在perlop中检查,它类似于
|
,但它检查
undef
值(不是假值)

尽管Perl的//操作符在C中没有直接的等价物,但它与C风格的or相关。事实上,它与| |完全相同,只是它测试左手边的定义性,而不是它的真实性

所以简而言之,

my $abc = delete $args{ 'abc' } // croak 'some information!';

$args{'abc'}
返回
unde
值时,将发出咯咯声。

这类似于SQL的合并函数(尽管此处仅支持两个操作数)