Perl自学(08)——运算符

本文参考博客

Perl 语言内置了丰富的运算符,我们来看下常用的几种:

  1. 算术运算符
  2. 比较运算符
  3. 逻辑运算符
  4. 赋值运算符
  5. 位运算符
  6. 引号运算符
  7. 其他运算符

1. 算术运算符

算术主要就是加、减、乘、除、取余、幂次方

运算符描述变量a、b的值实例
+加法运算$a =10;$b=20$a + $b 结果为 30
-减法运算$a =10;$b=20$a - $b 结果为 -10
*乘法运算$a =10;$b=20$a * $b 结果为 200
/除法运算$a =10;$b=20$b / $a 结果为 2
%求余运算,整除后的余数$a =10;$b=20$b % $a 结果为 0
**乘幂$a =10;$b=20$a**$b 结果为 10 的 20 次方
#!/usr/bin/perl
 
$a = 10;
$b = 20;
 
print "\$a = $a , \$b = $b\n";
 
$c = $a + $b;
print '$a + $b = ' . $c . "\n";
 
$c = $a - $b;
print '$a - $b = ' . $c . "\n";
 
$c = $a * $b;
print '$a * $b = ' . $c . "\n";
 
$c = $a / $b;
print '$a / $b = ' . $c . "\n";
 
$c = $a % $b;
print '$a % $b = ' . $c. "\n";
 
$a = 2;
$b = 4;
$c = $a ** $b;
print '$a ** $b = ' . $c . "\n";

输出结果:

$a = 10 , $b = 20
$a + $b = 30
$a - $b = -10
$a * $b = 200
$a / $b = 0.5
$a % $b = 10
$a ** $b = 16

2. 比较运算符

==检查两个操作数的值是否相等,如果相等则条件为 true,否则为 false。
!=检查两个操作数的值是否相等,如果不相等则条件为 true,否则为 false。
<=>检查两个操作数的值是否相等, 如果左边的数小于右边的数返回 -1,如果相等返回 0, 如果左边的数大于右边的数返回 1 。
>检查左操作数的值是否大于右操作数的值,如果是则条件为 true,否则为 false。
<检查左操作数的值是否小于右操作数的值,如果是则条件为 true,否则返回 false。
>=检查左操作数的值是否大于或等于右操作数的值,如果是则条件为 true,否则返回 false。
<=检查左操作数的值是否小于或等于右操作数的值,如果是则条件为 true,否则返回 false。。

 字符串比较:

lt

检查左边的字符串是否小于右边的字符串,如果是返回 true,否则返回 false。

gt

检查左边的字符串是否大于右边的字符串,如果是返回 true,否则返回 false。

le

检查左边的字符串是否小于或等于右边的字符串,如果是返回 true,否则返回 false。

ge

检查左边的字符串是否大于或等于右边的字符串,如果是返回 true,否则返回 false。

eq

检查左边的字符串是否等于右边的字符串,如果是返回 true,否则返回 false。

ne

检查左边的字符串是否不等于右边的字符串,如果是返回 true,否则返回 false。

cmp

如果左边的字符串大于右边的字符串返回 1,如果相等返回 0,如果左边的字符串小于右边的字符串返回 -1。

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. 位运算

&(且)如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。
|(或)如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。
^(异或)如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。
~(非)二进制反码运算符是一元运算符,具有"翻转"位效果,即0变成1,1变成0。
<<(左移)二进制左移运算符。左操作数的值向左移动右操作数指定的位数。(0补齐)
>>(右移)二进制右移运算符。左操作数的值向右移动右操作数指定的位数。(0补齐)

 5. 逻辑运算符

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

 6. 引号运算

q{ }为字符串添加单引号q{abcd} 结果为 'abcd'
qq{ }为字符串添加双引号qq{abcd} 结果为 "abcd"
qx{ }为字符串添加反引号qx{abcd} 结果为 `abcd`

引号示例:

#!/usr/bin/perl
 
$a = 10;
 
$b = q{a = $a};
print "q{a = \$a} = $b\n";
 
$b = qq{a = $a};
print "qq{a = \$a} = $b\n";
 
# 使用 unix 的 date 命令执行
$t = qx{date};
print "qx{date} = $t\n";

 输出结果:

q{a = $a} = a = $a
qq{a = $a} = a = 10
qx{date} = 2016年 6月10日 星期五 16时22分33秒 CST

7. 其他运算符

.点号 (.) 用于连接两个字符串。如果 $a="run", $b="oob" , $a.$b 结果为 "runoob"
xx 运算符返回字符串重复的次数。('-' x 3) 输出为 ---。
.... 为范围运算符。(2..5) 输出结果为 (2, 3, 4, 5)
++自增运算符,整数值增加 1$a =10, $a++ will 输出为 11
--自减运算符,整数值减少 1$a =10, $a-- 输出为 9
->箭号用于指定一个类的方法$obj->$a 表示对象 $obj 的 $a 方法。

8. 运算符优先级

++, --
-, ~, !从右到左
**从右到左
=~, !~从左到右
*, /, %, x从左到右
+, -, .从左到右
<<, >>从左到右
-e, -r,
<, <=, >, >=, lt, le, gt, ge从左到右
==, !=, <=>, eq, ne, cmp从左到右
&从左到右
|, ^从左到右
&&从左到右
||从左到右
..从左到右
? and :从右到左
=, +=, -=, *=,从右到左
其他
,从左到右
not从左到右
and从左到右
or, xor从左到右
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值