可以使用表达式 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