Perl入门学习(七)运算符

a76695dc7b02424583a36ac6a02f7ebb.jpg

Perl 语言常用的几种运算符:

  • 算术运算符

  • 比较运算符

  • 逻辑运算符

  • 赋值运算符

  • 位运算符

  • 引号运算符

  • 其他运算符

1、算数运算符

运算符描述
+加法运算
-减法运算
*乘法运算
/除法运算
%除法求余
**乘幂

示例如下:

#!/usr/bin/perl -w use strict
$x = 3 ;
$y = 2 ;
$z = $x + $y ;
print "$x+$y = $z\n";
$z = $x - $y ;
print "$x-$y = $z\n";
$z = $x * $y ;
print "$x*$y = $z\n";
$z = $x / $y ;
print "$x/$y = $z\n";
$z = $x % $y ;
print "$x%$y = $z\n";
$z = $x ** $y ;
print "$x**$y = $z\n";

运算结果如下:

./script.pl
-> $x+$y = 5
   $x-$y = 1
   $x*$y = 6
   $x/%y = 1.5
   $x%$y = 1
   $x**$y = 9

 2、比较运算符

运算符描述
==运算符左右两边的值相等则条件为 true,否则为 false。
!=运算符左右两边的值不相等则条件为 true,否则为 false
<=>运算符左边的值小于右边返回 -1,相等返回 0, 左边大于右边返回 1 。
>运算符左边的值大于右边则条件为 true,否则为 false。
<运算符左边的值小于右边则条件为 true,否则返回 false。
>=运算符左边的值大于等于右边则条件为 true,否则返回 false。
<=运算符左边的值小于等于右边则条件为 true,否则返回 false。

示例如下:

#!/usr/bin/perl -w use strict
$x = 3 ;
$y = 2 ;
$z = $x + $y ;
print "\$x<=>\$y = $z\n";
$x == $y ? print "\$x == \$y is true \n" :  print "\$x == \$y is false \n";
$x != $y ? print "\$x != \$y is true \n" :  print "\$x != \$y is false \n";
$x >  $y ? print "\$x >  \$y is true \n" :  print "\$x >  \$y is false \n";
$x <  $y ? print "\$x <  \$y is true \n" :  print "\$x <  \$y is false \n";
$x >= $y ? print "\$x >= \$y is true \n" :  print "\$x >= \$y is false \n";
$x <= $y ? print "\$x <= \$y is true \n" :  print "\$x <= \$y is false \n";

运行结果如下:

./script.pl
-> $x<=>$y = 1 
   $x == $y is false
   $x != $y is true
   $x >  $y is true
   $x <  %y is false
   $x >= $y is true
   $x <= $y is false

除了数字的比较运算符以外,字符串也有比较运算符

运算符描述
eq运算符左右两边字符串相等返回true,否则返回false
ne运算符左右两边字符串不相等返回true,否则返回false
lt运算符左边字符串小于右边的返回true,否则返回false
gt运算符左边字符串大于右边的返回true,否则返回false
le运算符左边字符串小于等于右边的返回true,否则返回false
ge运算符左边字符串大于等于右边的返回true,否则返回false
cmp运算符左边字符串大于右边返回1,相等返回0,小于返回-1

示例如下:

#!/usr/bin/perl -w use strict
$x = "x" ;
$y = "y" ;
$X = "X" ;
$xx = "xx" ;

$z = $x cmp $y ;
print "x cmp y return $z\n";

$x eq $y ? print "x eq y is true \n" :  print "x eq y is false \n";
$x ne $y ? print "x ne y is true \n" :  print "x ne y is false \n";
$x lt $y ? print "x lt y is true \n" :  print "x lt y is false \n";
$x gt $y ? print "x gt y is true \n" :  print "x gt y is false \n";
$x le $y ? print "x le y is true \n" :  print "x le y is false \n";
$x ge $y ? print "x ge y is true \n" :  print "x ge y is false \n";

$X gt $x ? print "X gt x is true \n" :  print "X gt x is false \n";
$xx gt $X ? print "xx gt X is true \n" :  print "xx gt X is false \n";

运行结果如下:

./script.pl
-> x cmp y return -1
   x eq y is false
   x ne y is true
   x lt y is true
   x gt y is false
   x le y is true
   x ge y is false
   X gt x is true
   xx gt X is true
   

 3、赋值运算符

与算数运算结合使用

运算符描述实例
=简单的赋值运算符,把右边操作数的值赋给左边操作数$c = $a + $b 将把 $a + $b 的值赋给 $c
+=加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数$c += $a 相等于 $c = $c + $a
-=减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数$c -= $a 相等于 $c = $c - $a
*=乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数$c *= $a 相等于 $c = $c * $a
/=除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数$c /= $a 相等于 $c = $c / $a
%=求模且赋值运算符,求两个操作数的模赋值给左边操作数$c %= $a 相等于 $c = $c % a
**=乘幂且赋值运算符,求两个操作数的乘幂赋值给左边操作数$c **= $a 相等于 $c = $c ** $a

 4、位运算

二进制按位运算,逐位操作。1和2的二进制表示为0001和0010,按位与操作的话就是0011,,0和0与结果为0,1和1与结果1,1和0与结果为0,所以对应十进制结果为0 。

设$a = 1; $b = 2 ;对应的二进制为0000 0001和0000 0010 。 

运算符描述实例
&二进制按位与(AND)运算符,同为1时输出1,否则为0。($a & $b) 将得到 0,二进制为0000 0000
|二进制按位或(OR)运算符,其中一边为1,就输出1,都为0时输出0。($a | $b) 将得到 3 ,二进制为0000 0011
^二进制异或运算符,只有一边为1一边为0时输出1,否则为0。($a ^ $b) 将得到 3,二进制为0000 0011
~二进制反码运算符,”翻转”符号位后减1。(~$a ) 将得到 -2 ,二进制为 0000 0110 ,一个有符号二进制数的反码形式(001变成110)
<<二进制左移运算符。左操作数的值向左移动右操作数指定的位数(0补齐)。$a << 2 将得到 4 ,二进制为 0000 0100
>>二进制右移运算符,左操作数的值向右移动右操作数指定的位数(0补齐)。$a >> 2 将得到 0 ,二进制为 0000 0000

~反码运算符需要注意的是要把符号位取反后减一,1的反码运算就是-2,-1的反码运算就是0,而且需要在perl脚本中加入use integer;。

5、逻辑运算符

运算符描述实例
and逻辑与运算符。如果两个操作数都为 true,则条件为 true。($a and $b) 为 false。
&&C 风格的逻辑与运算符。如果两个操作数都为 true,则条件为 true($a && $b) 为 false。
or逻辑或运算符。如果两个操作数中有任意一个非零,则条件为 true。($a or $b) 为 true。
||C 风格逻辑或运算符。如果两个操作数中有任意一个非零,则条件为 true。($a || $b) 为 true。
not逻辑非运算符。用来反转操作数的逻辑状态。如果条件为 true,则逻辑非运算符将使其为 false。not($a and $b) 为 true。

6、引号运算

q与qq使用时搭配成对的分界符,常用的有()、{}、[],用字符代替也可以,只不过要相同

运算符描述实例
q为字符串添加单引号q{abcd} 结果为 ‘abcd’
qq为字符串添加双引号qq{abcd} 等效为 “abcd”,qq xabcdx也等效为“abcd”
qw为字符串用空格分隔元素@array=qx(a b c d) 等效为@array=(a,b,c,d)
qx给字符串添加反引号··,用来执行linux命令qx {echo abc},输出abc
#!/usr/bin/perl -w use strict
$t = qx {echo abc};
print "$t";
@a = (a,b,c);
@b = qw(a b c);
print "a=@a , b=@b";
$c = "abc";
$d = qq xabcx;
$e = qq {abc};
print "c=$c,d=$d,e=$e";

运行结果为:

./script.pl
-> abc
   a=a b c , b=a b c
   c=abc,d=abc,e=abc

7、运算符优先级

++, --
-, ~, !从右到左
**从右到左
=~, !~从左到右
*, /, %, x从左到右
+, -, .从左到右
<<, >>从左到右
-e, -r,
<, <=, >, >=, lt, le, gt, ge从左到右
==, !=, <=>, eq, ne, cmp从左到右
&从左到右
|, ^从左到右
&&从左到右
||从左到右
..从左到右
? and :从右到左
=, +=, -=, *=,从右到左
not从左到右
and从左到右
or, xor从左到右

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾陆楼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值