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

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

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

2

GT

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

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

3

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

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

4

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

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

5

情商

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

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

6

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

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

+=

添加AND赋值运算符,它将右操作数添加到左操作数并将结果分配给左操作数

示例- $c += $a 相当于 $c = $c + $a

3

-=

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

示例- $c -= $a 相当于 $c = $c - $a

4

*=

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

示例- $c *= $a 相当于 $c = $c * $a

5

/=

除法与赋值运算符,它将左操作数与右操作数相除,并将结果赋给左操作数

示例- $c /= $a 相当于 $c = $c / $a

6

%=

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

示例- $c %= $a 相当于 $c = $c % a

7

**=

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

示例- $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,由于有符号二进制数,它是 2 的补码形式的 1100 0011。

5

<<

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

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

6

>>

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

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

Perl 逻辑运算符

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

显示示例

先生。 运算符及描述
1

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

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

2

&&

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

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

3

或者

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

示例- ($a 或 $b) 为 true。

4

||

C 风格的逻辑 OR 运算符会复制一个位(如果该位存在于另一个操作数中)。

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

5

不是

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

示例- not($a 和 $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