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) is not true.

2

!= (不等于)

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

示例 − ($a != $b) is true.

3

<=>

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

示例 − ($a <=> $b) returns -1.

4

> (大于)

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

示例 − ($a > $b) is not true.

5

< (小于)

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

示例 − ($a < $b) is true.

6

>= (大于或等于)

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

示例 − ($a >= $b) is not true.

7

<= (小于或等于)

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

示例 − ($a <= $b) is true.

以下是股权经营者名单。 假设变量 $a 持有 "abc" 并且变量 $b 持有 "xyz" 然后,让我们检查以下字符串相等运算符 −

显示示例

序号 运算符 & 描述
1

lt

如果左参数按字符串小于右参数,则返回 true。

示例 − ($a lt $b) 返回 true。

2

gt

如果左参数按字符串大于右参数,则返回 true。

示例 − ($a gt $b) 返回 false。

3

le

如果左参数按字符串小于或等于右参数,则返回 true。

示例 − ($a le $b) 返回 true。

4

ge

如果左参数按字符串大于或等于右参数,则返回 true。

示例 − ($a ge $b) 返回 false。

5

eq

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

示例 − ($a eq $b) 返回 false。

6

ne

如果左参数按字符串方式不等于右参数,则返回 true。

示例 − ($a ne $b) 返回 true。

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

|

二进制或运算符如果存在于其他操作数中,则复制一点。

示例 − ($a | $b) 将给出 61 即 0011 1101

3

^

二进制 XOR 运算符复制该位,如果它在一个操作数中设置,但不是在两个操作数中设置。

示例 − ($a ^ $b) 将给出 49 即 0011 0001

4

~

二进制补码运算符是一元的,具有"翻转"位的效果。

示例 − (~$a ) 将给出 -61,即 1100 0011 的 2 补码形式,因为有符号二进制数。

5

<<

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

示例 − $a << 2 将给出 240 即 1111 0000

6

>>

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

示例 − $a>> 2 将给出 15 即 0000 1111


Perl 逻辑运算符

Perl 语言支持以下逻辑运算符。 假设变量 $a 为真,变量 $b 为假 −

显示示例

序号 运算符 & 描述
1

and

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

示例 − ($a and $b) 返回 false。

2

&&

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

示例 − ($a && $b) 返回 false。

3

or

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

示例 − ($a or $b) 返回 true。

4

||

如果存在于其他操作数中,C 风格的逻辑或运算符会复制一点。

示例 − ($a || $b) 返回 true。

5

not

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

示例 − not($a and $b) 返回 true。


类似引号的运算符

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

..

范围运算符 .. 返回从左值到右值计数(递增)的值列表

示例 − (2..5) 将给出 (2, 3, 4, 5)

4

++

自动增运算符将整数值加一

示例 − $a++ 将给出 11

5

--

自动减量运算符将整数值减一

示例 − $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