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

算术运算符

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

Sr.No. Operator & 描述
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中可用的所有算术运算符。将以下Perl程序复制并粘贴到test.pl文件中,然后执行该程序。

#!/usr/local/bin/perl
 
$a=21;
$b=10;

print "Value of\$a=$a and value of\$b=$b\n";

$c=$a + $b;
print 'Value of $a + $b=' . $c . "\n";

$c=$a - $b;
print 'Value of $a - $b=' . $c . "\n";

$c=$a * $b;
print 'Value of $a * $b=' . $c . "\n";

$c=$a/$b;
print 'Value of $a/$b=' . $c . "\n";

$c=$a % $b;
print 'Value of $a % $b=' . $c. "\n";

$a=2;
$b=4;
$c=$a ** $b;
print 'Value of $a ** $b=' . $c . "\n";

执行以上代码后,将产生以下输出-

Value of $a=21 and value of $b=10
Value of $a + $b=31
Value of $a - $b=11
Value of $a * $b=210
Value of $a/$b=2.1
Value of $a % $b=1
Value of $a ** $b=16

关系运算符

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

Sr.No. Operator & 描述
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.

请尝试以下示例,以了解Perl中可用的所有数值相等运算符。将以下Perl程序复制并粘贴到test.pl文件中,然后执行该程序。

#!/usr/local/bin/perl
 
$a = 21;
$b = 10;

print "Value of\$a=$a and value of\$b=$b\n";

if( $a == $b ) {
   print "$a ==\$b is true\n";
} else {
   print "\$a ==\$b is not true\n";
}

if( $a != $b ) {
   print "\$a !=\$b is true\n";
} else {
   print "\$a !=\$b is not true\n";
}

$c = $a <=> $b;
print "\$a <=>\$b returns $c\n";

if( $a > $b ) {
   print "\$a >\$b is true\n";
} else {
   print "\$a >\$b is not true\n";
}

if( $a >= $b ) {
   print "\$a >=\$b is true\n";
} else {
   print "\$a >=\$b is not true\n";
}

if( $a < $b ) {
   print "\$a <\$b is true\n";
} else {
   print "\$a <\$b is not true\n";
}

if( $a <= $b ) {
   print "\$a <=\$b is true\n";
} else {
   print "\$a <=\$b is not true\n";
}

执行以上代码后,将产生以下结果-

Value of $a=21 and value of $b=10
$a == $b is not true
$a != $b is true
$a <=> $b returns 1
$a > $b is true
$a >= $b is true
$a < $b is not true
$a <= $b is not true

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

Sr.No. Operator & 描述
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中可用的所有字符串相等运算符。将以下Perl程序复制并粘贴到test.pl文件中,然后执行该程序。

#!/usr/local/bin/perl
 
$a="abc";
$b="xyz";

print "Value of\$a=$a and value of\$b=$b\n";

if( $a lt $b ) {
   print "$a lt\$b is true\n";
} else {
   print "\$a lt\$b is not true\n";
}

if( $a gt $b ) {
   print "\$a gt\$b is true\n";
} else {
   print "\$a gt\$b is not true\n";
}

if( $a le $b ) {
   print "\$a le\$b is true\n";
} else {
   print "\$a le\$b is not true\n";
}

if( $a ge $b ) {
   print "\$a ge\$b is true\n";
} else {
   print "\$a ge\$b is not true\n";
}

if( $a ne $b ) {
   print "\$a ne\$b is true\n";
} else {
   print "\$a ne\$b is not true\n";
}

$c=$a cmp $b;
print "\$a cmp\$b returns $c\n";

执行以上代码后,将产生以下输出-

Value of $a=abc and value of $b=xyz
abc lt $b is true
$a gt $b is not true
$a le $b is true
$a ge $b is not true
$a ne $b is true
$a cmp $b returns -1

赋值运算符

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

Sr.No. Operator & 描述
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中可用的所有赋值运算符。将以下Perl程序复制并粘贴到test.pl文件中,然后执行该程序。

#!/usr/local/bin/perl
 
$a=10;
$b=20;

print "Value of\$a=$a and value of\$b=$b\n";

$c=$a + $b;
print "After assignment value of\$c=$c\n";

$c += $a;
print "Value of\$c=$c after statement\$c +=\$a\n";

$c -= $a;
print "Value of\$c=$c after statement\$c -=\$a\n";

$c *= $a;
print "Value of\$c=$c after statement\$c *=\$a\n";

$c /= $a;
print "Value of\$c=$c after statement\$c /=\$a\n";

$c %= $a;
print "Value of\$c=$c after statement\$c %=\$a\n";

$c=2;
$a=4;
print "Value of\$a=$a and value of\$c=$c\n";
$c **= $a;
print "Value of\$c=$c after statement\$c **=\$a\n";

执行以上代码后,将产生以下输出-

Value of $a=10 and value of $b=20
After assignment value of $c=30
Value of $c=40 after statement $c += $a
Value of $c=30 after statement $c -= $a
Value of $c=300 after statement $c *= $a
Value of $c=30 after statement $c /= $a
Value of $c=0 after statement $c %= $a
Value of $a=4 and value of $c=2
Value of $c=16 after statement $c **= $a

按位运算符

按位运算符对位进行运算并执行逐位操作。假设$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 & 描述
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程序复制并粘贴到test.pl文件中,然后执行该程序。

#!/usr/local/bin/perl

use integer;
 
$a = 60;
$b = 13;

print "Value of\$a=$a and value of\$b=$b\n";

$c = $a & $b;
print "Value of\$a &\$b=$c\n";

$c = $a | $b;
print "Value of\$a |\$b=$c\n";

$c = $a ^ $b;
print "Value of\$a ^\$b=$c\n";

$c = ~$a;
print "Value of ~\$a=$c\n";

$c = $a << 2;
print "Value of\$a << 2=$c\n";

$c = $a >> 2;
print "Value of\$a >> 2=$c\n";

执行以上代码后,将产生以下结果-

Value of $a=60 and value of $b=13
Value of $a & $b=12
Value of $a | $b=61
Value of $a ^ $b=49
Value of ~$a=-61
Value of $a << 2=240
Value of $a >> 2=15

逻辑运算符

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

Sr.No. Operator & 描述
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中可用的所有逻辑运算符。将以下Perl程序复制并粘贴到test.pl文件中,然后执行该程序。

#!/usr/local/bin/perl
 
$a=true;
$b=false;

print "Value of\$a=$a and value of\$b=$b\n";

$c=($a and $b);
print "Value of\$a and\$b=$c\n";

$c=($a  && $b);
print "Value of\$a &&\$b=$c\n";

$c=($a or $b);
print "Value of\$a or\$b=$c\n";

$c=($a || $b);
print "Value of\$a ||\$b=$c\n";

$a=0;
$c=not($a);
print "Value of not(\$a)= $c\n";

执行以上代码后,将产生以下输出-

Value of $a=true and value of $b=false
Value of $a and $b=false
Value of $a && $b=false
Value of $a or $b=true
Value of $a || $b=true
Value of not($a)= 1

引用运算符

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

Sr.No. Operator & 描述
1

q {}

用单引号将字符串引起来

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

2

qq {}

用双引号将字符串引起来

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

3

qx {}

用反引号引起来的字符串

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

请尝试以下示例,以了解Perl中可用的所有类似引号的运算符。将以下Perl程序复制并粘贴到test.pl文件中,然后执行该程序。

#!/usr/local/bin/perl

$a=10;
 
$b=q{a=$a};
print "Value of q{a =\$a}=$b\n";

$b=qq{a=$a};
print "Value of qq{a =\$a}=$b\n";

# unix command execution
$t=qx{date};
print "Value of qx{date}=$t\n";

执行以上代码后,将产生以下输出-

Value of q{a=$a}=a=$a
Value of qq{a=$a}=a=10
Value of qx{date}=Thu Feb 14 08:13:17 MST 2013

其他运算符

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

Sr.No. Operator & 描述
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。

#!/usr/local/bin/perl

$a="abc";
$b="def";

print "Value of\$a =$a and value of\$b=$b\n";
 
$c=$a . $b;
print "Value of\$a .\$b=$c\n";

$c="-" x 3;
print "Value of\"-\" x 3=$c\n";

@c=(2..5);
print "Value of (2..5)=@c\n";

$a=10;
$b=15;
print "Value of\$a =$a and value of\$b=$b\n";

$a++;
$c=$a ;
print "Value of\$a after\$a++=$c\n";

$b--;
$c=$b ;
print "Value of\$b after\$b--=$c\n";

执行以上代码后,将产生以下输出-

Value of $a=abc and value of $b=def
Value of $a . $b=abcdef
Value of "-" x 3=---
Value of (2..5)=2 3 4 5
Value of $a=10 and value of $b=15
Value of $a after $a++=11
Value of $b after $b--=14

运算符优先级

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

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

请尝试以下示例,以了解Perl中所有的perl运算符优先级。将以下Perl程序复制并粘贴到test.pl文件中,然后执行该程序。

#!/usr/local/bin/perl

$a=20;
$b=10;
$c=15;
$d=5;
$e;

print "Value of\$a =$a,\$b=$b,\$c=$c and\$d=$d\n";
 
$e=($a + $b) * $c/$d;
print "Value of (\$a +\$b) *\$c/\$d is =$e\n";

$e=(($a + $b) * $c )/$d;
print "Value of ((\$a +\$b) *\$c)/\$d is =$e\n";

$e=($a + $b) * ($c/$d);
print "Value of (\$a +\$b) * (\$c/\$d ) is =$e\n";

$e=$a + ($b * $c )/$d;
print "Value of\$a + (\$b *\$c )/\$d is =$e\n";

执行以上代码后,将产生以下输出-

Value of $a=20, $b=10, $c=15 and $d=5
Value of ($a + $b) * $c/$d is=90
Value of (($a + $b) * $c)/$d is=90
Value of ($a + $b) * ($c/$d ) is=90
Value of $a + ($b * $c )/$d is=50

参考链接

https://www.learnfk.com/perl/perl-operators.html