Perl - 运算符



什么是运算符?

可以使用表达式4 + 5 等于 9给出简单的答案。这里 4 和 5 称为操作数,+ 称为运算符。Perl 语言支持许多运算符类型,但以下是重要且最常用的运算符列表:

  • 算术运算符
  • 相等运算符
  • 逻辑运算符
  • 赋值运算符
  • 按位运算符
  • 逻辑运算符
  • 类引号运算符
  • 杂项运算符

让我们逐一看看所有运算符。

Perl 算术运算符

假设变量 $a 包含 10,变量 $b 包含 20,则以下是 Perl 算术运算符:

显示示例

序号 运算符 & 描述
1

+ (加法)

将运算符两侧的值相加

示例 - $a + $b 将得到 30

2

- (减法)

从左操作数中减去右操作数

示例 - $a - $b 将得到 -10

3

* (乘法)

将运算符两侧的值相乘

示例 - $a * $b 将得到 200

4

/ (除法)

将左操作数除以右操作数

示例 - $b / $a 将得到 2

5

% (模)

将左操作数除以右操作数并返回余数

示例 - $b % $a 将得到 0

6

** (指数)

对运算符执行指数(幂)计算

示例 - $a**$b 将得到 10 的 20 次幂

Perl 相等运算符

这些也称为关系运算符。假设变量 $a 包含 10,变量 $b 包含 20,那么让我们检查以下数值相等运算符:

显示示例

序号 运算符 & 描述
1

== (等于)

检查两个操作数的值是否相等,如果相等则条件为真。

示例 - ($a == $b) 为假。

2

!= (不等于)

检查两个操作数的值是否相等,如果值不相等则条件为真。

示例 - ($a != $b) 为真。

3

<=>

检查两个操作数的值是否相等,并根据左参数在数值上是否小于、等于或大于右参数返回 -1、0 或 1。

示例 - ($a <=> $b) 返回 -1。

4

> (大于)

检查左操作数的值是否大于右操作数的值,如果大于则条件为真。

示例 - ($a > $b) 为假。

5

< (小于)

检查左操作数的值是否小于右操作数的值,如果小于则条件为真。

示例 - ($a < $b) 为真。

6

>= (大于或等于)

检查左操作数的值是否大于或等于右操作数的值,如果大于或等于则条件为真。

示例 - ($a >= $b) 为假。

7

<= (小于或等于)

检查左操作数的值是否小于或等于右操作数的值,如果小于或等于则条件为真。

示例 - ($a <= $b) 为真。

以下是字符串相等运算符的列表。假设变量 $a 包含 "abc",变量 $b 包含 "xyz",那么让我们检查以下字符串相等运算符:

显示示例

序号 运算符 & 描述
1

lt

如果左参数在字符串上小于右参数,则返回真。

示例 - ($a lt $b) 为真。

2

gt

如果左参数在字符串上大于右参数,则返回真。

示例 - ($a gt $b) 为假。

3

le

如果左参数在字符串上小于或等于右参数,则返回真。

示例 - ($a le $b) 为真。

4

ge

如果左参数在字符串上大于或等于右参数,则返回真。

示例 - ($a ge $b) 为假。

5

eq

如果左参数在字符串上等于右参数,则返回真。

示例 - ($a eq $b) 为假。

6

ne

如果左参数在字符串上不等于右参数,则返回真。

示例 - ($a ne $b) 为真。

7

cmp

根据左参数在字符串上是否小于、等于或大于右参数返回 -1、0 或 1。

示例 - ($a cmp $b) 为 -1。

Perl 赋值运算符

假设变量 $a 包含 10,变量 $b 包含 20,则以下是 Perl 中可用的赋值运算符及其用法:

显示示例

序号 运算符 & 描述
1

=

简单赋值运算符,将右侧操作数的值赋给左侧操作数

示例 - $c = $a + $b 将 $a + $b 的值赋给 $c

2

+=

加并赋值运算符,将右操作数加到左操作数上并将结果赋给左操作数

示例 - $c += $a 等价于 $c = $c + $a

3

-=

减并赋值运算符,从左操作数中减去右操作数并将结果赋给左操作数

示例 - $c -= $a 等价于 $c = $c - $a

4

*=

乘并赋值运算符,将右操作数乘以左操作数并将结果赋给左操作数

示例 - $c *= $a 等价于 $c = $c * $a

5

/=

除并赋值运算符,将左操作数除以右操作数并将结果赋给左操作数

示例 - $c /= $a 等价于 $c = $c / $a

6

%=

模并赋值运算符,使用两个操作数取模并将结果赋给左操作数

示例 - $c %= $a 等价于 $c = $c % a

7

**=

指数并赋值运算符,对运算符执行指数(幂)计算并将值赋给左操作数

示例 - $c **= $a 等价于 $c = $c ** $a

Perl 按位运算符

按位运算符作用于位并执行逐位运算。假设 $a = 60;和 $b = 13;现在以二进制格式它们将如下所示:

$a = 0011 1100

$b = 0000 1101

-----------------

$a&$b = 0000 1100

$a|$b = 0011 1101

$a^$b = 0011 0001

~$a  = 1100 0011

Perl 语言支持以下按位运算符,假设 $a = 60;和 $b = 13

显示示例

序号 运算符 & 描述
1

&

二进制 AND 运算符如果位存在于两个操作数中,则将其复制到结果中。

示例 - ($a & $b) 将得到 12,即 0000 1100

2

|

二进制 OR 运算符如果位存在于任一操作数中,则将其复制。

示例 - ($a | $b) 将得到 61,即 0011 1101

3

^

二进制 XOR 运算符如果位在一个操作数中设置但在另一个操作数中未设置,则将其复制。

示例 - ($a ^ $b) 将得到 49,即 0011 0001

4

~

二进制一补码运算符是一元的,其作用是“翻转”位。

示例 - (~$a ) 将得到 -61,由于是有符号二进制数,因此在 2 的补码形式中为 1100 0011。

5

<<

二进制左移运算符。左操作数的值向左移动由右操作数指定的位数。

示例 - $a << 2 将得到 240,即 1111 0000

6

>>

二进制右移运算符。左操作数的值向右移动由右操作数指定的位数。

示例 - $a >> 2 将得到 15,即 0000 1111

Perl 逻辑运算符

Perl 语言支持以下逻辑运算符。假设变量 $a 包含 true,变量 $b 包含 false,则:

显示示例

序号 运算符 & 描述
1

and

称为逻辑 AND 运算符。如果两个操作数都为真,则条件为真。

示例 - ($a and $b) 为假。

2

&&

C 风格的逻辑 AND 运算符如果位存在于两个操作数中,则将其复制到结果中。

示例 - ($a && $b) 为假。

3

or

称为逻辑 OR 运算符。如果两个操作数中的任何一个非零,则条件为真。

示例 - ($a or $b) 为真。

4

||

C 风格的逻辑 OR 运算符如果位存在于任一操作数中,则将其复制。

示例 - ($a || $b) 为真。

5

not

称为逻辑 NOT 运算符。用于反转其操作数的逻辑状态。如果条件为真,则逻辑 NOT 运算符将使其为假。

示例 - not($a and $b) 为真。

类引号运算符

Perl 语言支持以下类引号运算符。在下表中,{} 代表您选择的任何分隔符对。

显示示例

序号 运算符 & 描述
1

q{ }

用单引号括起来一个字符串

示例 - q{abcd} 得到 'abcd'

2

qq{ }

用双引号括起来一个字符串

示例 - qq{abcd} 得到 "abcd"

3

qx{ }

用反引号括起来一个字符串

示例 - qx{abcd} 得到 `abcd`

杂项运算符

Perl 语言支持以下杂项运算符。假设变量 a 包含 10,变量 b 包含 20,则:

显示示例

序号 运算符 & 描述
1

.

二元运算符点 (.) 连接两个字符串。

示例 - 如果 $a = "abc",$b = "def",则 $a.$b 将得到 "abcdef"

2

x

重复运算符 x 返回一个字符串,该字符串由左操作数重复由右操作数指定的次数。

示例 − ('-' x 3) 将得到 ---。

3

..

范围操作符 .. 返回一个从左侧值到右侧值(递增1)的数值列表。

示例 − (2..5) 将得到 (2, 3, 4, 5)

4

++

自动递增操作符将整数值增加1。

示例 − $a++ 将得到 11

5

--

自动递减操作符将整数值减少1。

示例 − $a-- 将得到 9

6

->

箭头操作符主要用于从对象或类名中取消引用方法或变量。

示例 − $obj->$a 是从对象 $obj 中访问变量 $a 的示例。

Perl 运算符优先级

下表列出了所有运算符,从最高优先级到最低优先级。

显示示例

left	terms and list operators (leftward)
left	->
nonassoc	++ --
right	**
right	! ~ \ and unary + and -
left	=~ !~
left	* / % x
left	+ - .
left	<< >>
nonassoc	named unary operators
nonassoc	< > <= >= lt gt le ge
nonassoc	== != <=> eq ne cmp ~~
left	&
left	| ^
left	&&
left	|| //
nonassoc	..  ...
right	?:
right	= += -= *= etc.
left	, =>
nonassoc	list operators (rightward)
right	not
left	and
left	or xor
广告