Perl - 运算符
什么是运算符?
可以使用表达式4 + 5 等于9 给出简单的答案。 这里 4 和 5 称为操作数,+ 称为运算符。 Perl 语言支持多种运算符类型,但以下是重要且最常用的运算符列表 −
- 算术运算符
- 等式运算符
- 逻辑运算符
- 赋值运算符
- 位运算符
- 逻辑运算符
- 类似引号的运算符
- 杂项运算符
让我们一一看看所有的运算符。
Perl 算术运算符
假设变量 $a 包含 10,变量 $b 包含 20,那么下面是 Perl 算术运算符 −
序号 | 运算符 & 描述 |
---|---|
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 然后,让我们检查以下数字相等运算符 −
序号 | 运算符 & 描述 |
---|---|
1 | == (等于) 检查两个操作数的值是否相等,如果是则条件为真。 示例 − ($a == $b) is not true. |
2 | != (不等于) 检查两个操作数的值是否相等,如果值不相等,则条件为真。 示例 − ($a != $b) is true. |
3 | <=> 检查两个操作数的值是否相等,并根据左参数在数值上是否小于、等于或大于右参数返回 -1、0 或 1。 示例 − ($a <=> $b) returns -1. |
4 | > (大于) 检查左操作数的值是否大于右操作数的值,如果是,则条件为真。 示例 − ($a > $b) is not true. |
5 | < (小于) 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 示例 − ($a < $b) is true. |
6 | >= (大于或等于) 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 示例 − ($a >= $b) is not true. |
7 | <= (小于或等于) 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 示例 − ($a <= $b) is true. |
以下是股权经营者名单。 假设变量 $a 持有 "abc" 并且变量 $b 持有 "xyz" 然后,让我们检查以下字符串相等运算符 −
序号 | 运算符 & 描述 |
---|---|
1 | lt 如果左参数按字符串小于右参数,则返回 true。 示例 − ($a lt $b) 返回 true。 |
2 | gt 如果左参数按字符串大于右参数,则返回 true。 示例 − ($a gt $b) 返回 false。 |
3 | le 如果左参数按字符串小于或等于右参数,则返回 true。 示例 − ($a le $b) 返回 true。 |
4 | ge 如果左参数按字符串大于或等于右参数,则返回 true。 示例 − ($a ge $b) 返回 false。 |
5 | eq 如果左参数在字符串上等于右参数,则返回 true。 示例 − ($a eq $b) 返回 false。 |
6 | ne 如果左参数按字符串方式不等于右参数,则返回 true。 示例 − ($a ne $b) 返回 true。 |
7 | cmp 根据左侧参数是按字符串方式小于、等于还是大于右侧参数,返回 -1、0 或 1。 示例 − ($a cmp $b) 返回 -1。 |
Perl 赋值运算符
假设变量 $a 包含 10,变量 $b 包含 20,那么下面是 Perl 中可用的赋值运算符及其用法 −
序号 | 运算符 & 描述 |
---|---|
1 | = 简单赋值运算符,将右侧操作数的值赋值给左侧操作数 示例 − $c = $a + $b 将 $a + $b 的值赋给 $c |
2 | += 加与赋值运算符,将右操作数添加到左操作数并将结果分配给左操作数 示例 − $c += $a 等价于 $c = $c + $a |
3 | -= 减与赋值运算符,它从左操作数中减去右操作数并将结果分配给左操作数 示例 − $c -= $a 等价于 $c = $c - $a |
4 | *= 乘与赋值运算符,它将右操作数与左操作数相乘并将结果分配给左操作数 示例 − $c *= $a 等价于 $c = $c * $a |
5 | /= 除与赋值运算符,将左操作数与右操作数相除,并将结果赋给左操作数 示例 − $c /= $a 等价于 $c = $c / $a |
6 | %= 模数与赋值运算符,对两个操作数取模并将结果赋值给左操作数 示例 − $c %= $a 等价于 $c = $c % a |
7 | **= 指数与赋值运算符,对运算符进行指数(幂)计算,并为左操作数赋值 示例 − $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 语言支持以下位运算符,假设 $a = 60; 和 $b = 13
序号 | 运算符 & 描述 |
---|---|
1 | & 如果两个操作数中都存在二进制 AND 运算符,则将其复制到结果中。 示例 − ($a & $b) 将给出 12 即 0000 1100 |
2 | | 二进制或运算符如果存在于其他操作数中,则复制一点。 示例 − ($a | $b) 将给出 61 即 0011 1101 |
3 | ^ 二进制 XOR 运算符复制该位,如果它在一个操作数中设置,但不是在两个操作数中设置。 示例 − ($a ^ $b) 将给出 49 即 0011 0001 |
4 | ~ 二进制补码运算符是一元的,具有"翻转"位的效果。 示例 − (~$a ) 将给出 -61,即 1100 0011 的 2 补码形式,因为有符号二进制数。 |
5 | << 二进制左移运算符。 左操作数的值向左移动右操作数指定的位数。 示例 − $a << 2 将给出 240 即 1111 0000 |
6 | >> 二进制右移运算符。 左操作数的值向右移动右操作数指定的位数。 示例 − $a>> 2 将给出 15 即 0000 1111 |
Perl 逻辑运算符
Perl 语言支持以下逻辑运算符。 假设变量 $a 为真,变量 $b 为假 −
序号 | 运算符 & 描述 |
---|---|
1 | and 称为逻辑与运算符。 如果两个操作数都为真,则条件为真。 示例 − ($a and $b) 返回 false。 |
2 | && 如果两个操作数中都存在 C 风格的逻辑 AND 运算符,则将其复制到结果中。 示例 − ($a && $b) 返回 false。 |
3 | or 称为逻辑或运算符。 如果两个操作数中的任何一个不为零,则条件为真。 示例 − ($a or $b) 返回 true。 |
4 | || 如果存在于其他操作数中,C 风格的逻辑或运算符会复制一点。 示例 − ($a || $b) 返回 true。 |
5 | not 称为逻辑非运算符。 用于反转其操作数的逻辑状态。 如果条件为真,则逻辑非运算符将为假。 示例 − not($a and $b) 返回 true。 |
类似引号的运算符
Perl 语言支持以下类似引用的运算符。 在下表中,{} 代表您选择的任何一对分隔符。
序号 | 运算符 & 描述 |
---|---|
1 | q{ } 用单引号将字符串括起来 示例 − q{abcd} 给出 'abcd' |
2 | qq{ } 用双引号将字符串括起来 示例 − qq{abcd} 给出"abcd" |
3 | qx{ } 用反引号将字符串括起来 示例 − qx{abcd} 给出 `abcd` |
杂项运算符
Perl 语言支持以下杂项运算符。 假设变量 a 保持 10 并且变量 b 保持 20 然后 −
序号 | 运算符 & 描述 |
---|---|
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