Perl - 运算符介绍

什么是运算符?

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

Perl算术运算符

假设变量$a=10,变量$b=20,那么以下是Perl算术运算符-

查看示例

Sr.No.Operator & Description
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,那么让我们检查以下数值相等运算符-

Sr.No.Operator & Description
1

==(等于)

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

($a == $b) is not true。

2

!=(不等于)

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

($a!= $b) is true。

3

<=>

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

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

4

> (greater than)

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

 ($a > $b) is not true.

5

< (less than)

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

($a < $b) is true.

6

>= (greater than or equal to)

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

 ($a >= $b) is not true.

7

<= (less than or equal to)

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

($a <= $b) is true.

假设变量$a="abc",变量$b="xyz",那么,让我们检查以下字符串相等运算符-

显示示例

Sr.No.Operator & Description
1

lt

如果left参数在字符串上小于right参数,则返回true。

($a lt $b) is true

2

gt

如果left参数在字符串上大于right参数,则返回true。

($a gt $b) is false。

3

le

如果left参数在字符串上小于或等于right参数,则返回true。

($a le $b) is true

4

ge

如果left参数在字符串上大于或等于right参数,则返回true。

-($a ge $b) is false

5

eq

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

-($a eq $b) is false

6

ne

如果left参数沿字符串方向不等于right参数,则返回true。

($a ne $b) is true

7

cmp

返回-1、0或1,具体取决于左参数是否按字符串方式小于,等于或大于右参数。

-($a cmp $b) is -1。

Perl赋值运算符

假设变量$a=10,变量$b=20,那么下面是Perl中可用的赋值运算符及其用法-

显示示例

Sr.No.Operator & Description
1

=

简单的赋值运算符,将值从右侧操作数分配到左侧操作数

$c= $a + $b 将$a + $b的值分配给$c

2

+=

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

$c +=$a等效于$c= $c + $a

3

-=

减去AND赋值运算符,它从左操作数中减去右操作数,并将输出分配给左操作数

$c-= $a等效于$c=$c-$a

4

*=

将AND运算符相乘,将右操作数与左操作数相乘,并将输出分配给左操作数

$c *=$a等效于$c=$c * $a

5

/=

除法AND赋值运算符,它将左操作数除以右操作数,并将输出分配给左操作数

$c/= $a等同于$c=$c/$a

6

%=

模AND赋值运算符,它使用两个操作数取模并将输出赋给左操作数

$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语言支持以下Bitwise运算符,假设$a=60;和$b=13

Sr.No.Operator & Description
1

&

如果两个操作数中都存在二进制AND运算符,则会将一位复制到输出中。

示例− ($a & $b)=12 which is 0000 1100

2

|

如果二进制运算符存在于eather操作数中,则它会复制一点。

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

3

^

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

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

4

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

示例-(〜$a)将给出2的补码形式的-61(即1100 0011),这是由于带符号的二进制数。

5

<<

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

示例− $a << 2=240 which is 1111 0000

6

>>

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

示例 − $a >> 2=15 which is 0000 1111

Perl逻辑运算符

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

显示示例

Sr.No.Operator & Description
1

and

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

示例-($a AND $b) is false。

2

&&

如果两个操作数中都存在C样式的逻辑AND运算符,则会将其复制到输出中。

示例− ($a && $b) is false.

3

or 

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

示例-($a or $b) is true。

4

||

如果c样式的逻辑OR运算符存在于eather操作数中,则会对其进行复制。

示例-($a || $b) is true。

5

not

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

示例-not($a and $b) is true。

引用运算符

Perl语言支持以下类似Quote的运算符。在下表中,{}代表您选择的任何一对定界符。

显示示例

Sr.No.Operator & Description
1

q {}

用单引号将字符串引起来

示例-q {abcd}给出了 'abcd'

2

qq {}

用双引号将字符串引起来

示例-qq {abcd}给出" abcd"

3

qx {}

用反引号引起来的字符串

示例-qx {abcd}给出了 `abcd`

其他运算符

Perl语言支持以下杂类运算符。假设变量a=10,变量b=20,则-

显示示例

Sr.No.Operator & Description
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
点我分享笔记