Perl 运算符

2024 年 8 月 29 日 | 阅读 3 分钟

Perl 运算符是一系列用作语法的符号。运算符是一种函数,其操作数是参数。


Perl 运算符优先级

Perl 优先级的作用类似于数学中的 BODMAS。加法和减法总是在乘法和除法之后进行。

例如:

这里,根据 BODMAS 规则,答案将是 2。首先计算 (6 / 3 = 2),然后将商 2 乘以 5,最后进行减法和加法。

示例

输出

2
80

Perl 运算符优先级表

运算符描述
++, --自动递增,自动递减
-, ~, !具有一个操作数的运算符
**幂运算
=~, !~模式匹配运算符
*, /, %, x乘法、除法、余数、重复
+, -, .加法、减法、连接
<<, >>移位运算符
-e, -r文件状态运算符
<, <=, >, >=, lt, le, gt, ge不等式比较运算符
==, !=, <=>, eq, nq, cmp相等比较运算符
&按位与
|, ^位或和异或
&&逻辑与
||逻辑或
. .列表范围运算符
? 和条件运算符
=, +=, -=, *=赋值运算符
,逗号运算符
not低优先级逻辑非
并且低优先级逻辑与
或,异或低优先级逻辑或和异或

Perl 运算符结合性

运算符的结合性帮助您决定是从(左到右)还是(右到左)评估一个等式。

运算顺序非常重要。有时从两边看是相同的,但有时会产生巨大的差异。

例如:

这个问题的答案从左到右或从右到左都是一样的。

3 ∗∗ 2 ∗∗ 3

这个问题的答案从左边是 (9 ∗∗ 3),从右边是 (3 ∗∗ 8)。这两个答案有很大的差异。

示例

输出

6561

Perl 结合性表

运算符描述
++, --此处不适用方向顺序
-, ~, !从右向左
**从右向左
=~, !~从左向右
*, /, %, x从左向右
+, -, .从左向右
<<, >>从左向右
-e, -r此处不适用方向顺序
<, <=, >, >=, lt, le, gt, ge从左向右
==, !=, <=>, eq, ne, cmp从左向右
&从左向右
|, ^从左向右
&&从左向右
||从左向右
..从左向右
? 和从右向左
=, +=, -=, *=从右向左
,从左向右
not从左向右
并且从左向右
或,异或从左向右

Perl 元数

运算符的元数可以定义为其操作的操作数的数量。

一个零元运算符对零个操作数进行运算,一个一元运算符对一个操作数进行运算,一个二元运算符对两个操作数进行运算,一个列表元运算符对操作数列表进行运算。

例如:

算术运算符通常是左结合的。这里,先计算 (3 + 3),然后转到第二个 (-) 运算符。

示例

输出

26

Perl 修饰性

运算符修饰性可以定义为它相对于其操作数的位置。

例如:

  • 中缀运算符出现在其操作数之间。

    3 + 2

    这里,+ 运算符出现在操作数 3 和 2 之间

  • 前缀运算符出现在其操作数之前。

    ! $a, - 3x

    这里,! 和 - 运算符出现在操作数 $a 和 3 之前。

  • 后缀运算符出现在其操作数之后。

    $x ++

    这里,++ 运算符出现在操作数 $x 之后。

  • 环缀运算符环绕其操作数。例如哈希构造函数和引用运算符。

    (qq[...])

  • 后环缀运算符跟随某些操作数并环绕某些操作数。

    $hash{$a}