Perl - 运算符
什么是运算符?
可以用表达式 4 + 5 等于 9 来简单说明。这里 4 和 5 称为操作数,+ 称为运算符。Perl 语言支持多种运算符类型,以下是重要且最常用的运算符列表 −
- Arithmetic Operators
- Equality Operators
- Logical Operators
- Assignment Operators
- Bitwise Operators
- Logical Operators
- Quote-like Operators
- Miscellaneous Operators
让我们逐一查看所有运算符。
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 | == (等于) 检查两个操作数的值是否相等,如果相等则条件为真。 示例 − ( |
| 2 | != (不等于) 检查两个操作数的值是否相等,如果不相等则条件为真。 示例 − ( |
| 3 | <=> 检查两个操作数的值是否相等,并根据左操作数数值上是否小于、等于或大于右操作数,返回 -1、0 或 1。 示例 − ( |
| 4 | > (大于) 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 示例 − ( |
| 5 | < (小于) 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 示例 − ( |
| 6 | >= (大于或等于) 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 示例 − ( |
| 7 | <= (小于或等于) 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 示例 − ( |
下面是字符串相等运算符的列表。假设变量 $a 的值为 "abc",变量 $b 的值为 "xyz",那么,让我们检查以下字符串相等运算符 −
查看示例
| 序号 | 运算符 & 描述 |
|---|---|
| 1 | lt 如果左操作数在字符串比较中小于右操作数,则返回真。 示例 − ( |
| 2 | gt 如果左操作数在字符串比较中大于右操作数,则返回真。 示例 − ( |
| 3 | le 如果左操作数在字符串比较中小于或等于右操作数,则返回真。 示例 − ( |
| 4 | ge 如果左操作数在字符串比较中大于或等于右操作数,则返回真。 示例 − ( |
| 5 | eq 如果左操作数在字符串比较中等于右操作数,则返回真。 示例 − ( |
| 6 | ne 如果左操作数在字符串比较中不等于右操作数,则返回真。 示例 − ( |
| 7 | cmp 根据左操作数在字符串比较中是否小于、等于或大于右操作数,返回 -1、0 或 1。 示例 − ( |
Perl 赋值运算符
假设变量 $a 的值为 10,变量 $b 的值为 20,那么 Perl 中可用的赋值运算符及其用法如下 −
查看示例
| 序号 | 运算符 & 描述 |
|---|---|
| 1 | = 简单赋值运算符,将右侧操作数的数值赋给左侧操作数 示例 − |
| 2 | += 加法并赋值运算符,将右侧操作数加到左侧操作数上,并将结果赋给左侧操作数 示例 − |
| 3 | -= 减法并赋值运算符,从左侧操作数中减去右侧操作数,并将结果赋给左侧操作数 示例 − |
| 4 | *= 乘法并赋值运算符,将右侧操作数乘以左侧操作数,并将结果赋给左侧操作数 示例 − |
| 5 | /= 除法并赋值运算符,用左侧操作数除以右侧操作数,并将结果赋给左侧操作数 示例 − |
| 6 | %= 取模并赋值运算符,使用两个操作数取模,并将结果赋给左侧操作数 示例 − |
| 7 | **= 幂运算并赋值运算符,对操作数执行指数(幂)计算,并将结果赋给左侧操作数 示例 − |
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 运算符,如果该位在两个操作数中都存在,则将其复制到结果中。 示例 − |
| 2 | | 二进制 OR 运算符,如果该位存在于任一操作数中,则将其复制到结果中。 示例 − |
| 3 | ^ 二进制 XOR 运算符,如果该位在一个操作数中设置但不在另一个中,则将其复制到结果中。 示例 − |
| 4 | ~ 二进制取反运算符是单目运算符,具有“翻转”位的效果。 示例 − |
| 5 | << 二进制左移运算符。左侧操作数的数值向左移动右侧操作数指定的位数。 示例 − |
| 6 | >> 二进制右移运算符。左侧操作数的数值向右移动右侧操作数指定的位数。 示例 − |
Perl 逻辑运算符
Perl 语言支持以下逻辑运算符。假设变量 $a 为真,变量 $b 为假,那么 −
查看示例
| 序号 | 运算符 & 描述 |
|---|---|
| 1 | and 称为逻辑 AND 运算符。如果两个操作数都为真,则条件为真。 示例 − |
| 2 | && C 风格的逻辑 AND 运算符。如果该位在两个操作数中都存在,则将其复制到结果中。 示例 − |
| 3 | or 称为逻辑 OR 运算符。如果两个操作数中任一不为零,则条件为真。 示例 − |
| 4 | || C 风格的逻辑 OR 运算符。如果该位存在于任一操作数中,则将其复制到结果中。 示例 − |
| 5 | not 称为逻辑 NOT 运算符。用于反转其操作数的逻辑状态。如果条件为真,则逻辑 NOT 运算符将其变为假。 示例 − |
类似引号的运算符
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 | .. 范围运算符 .. 返回从左值到右值(按 1 递增)计数的值列表 示例 − (2..5) 将给出 (2, 3, 4, 5) |
| 4 | ++ 自增运算符将整数值增加 1 示例 − $a++ 将给出 11 |
| 5 | -- 自减运算符将整数值减少 1 示例 − $a-- 将给出 9 |
| 6 | -> 箭头运算符主要用于从对象或 class 名称中解引用方法或变量 示例 − $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