- Perl 基础
- Perl - 首页
- Perl - 简介
- Perl - 环境
- Perl - 语法概述
- Perl - 数据类型
- Perl - 变量
- Perl - 标量
- Perl - 数组
- Perl - 哈希
- Perl - IF...ELSE
- Perl - 循环
- Perl - 运算符
- Perl - 日期和时间
- Perl - 子程序
- Perl - 引用
- Perl - 格式
- Perl - 文件 I/O
- Perl - 目录
- Perl - 错误处理
- Perl - 特殊变量
- Perl - 编码规范
- Perl - 正则表达式
- Perl - 发送邮件
- Perl 高级
- Perl - 套接字编程
- Perl - 面向对象
- Perl - 数据库访问
- Perl - CGI 编程
- Perl - 包和模块
- Perl - 进程管理
- Perl - 嵌入式文档
- Perl - 函数引用
- Perl 有用资源
- Perl - 问答
- Perl - 快速指南
- Perl - 有用资源
- Perl - 讨论
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) 为假。 |
2 | != (不等于) 检查两个操作数的值是否相等,如果值不相等则条件为真。 示例 - ($a != $b) 为真。 |
3 | <=> 检查两个操作数的值是否相等,并根据左参数在数值上是否小于、等于或大于右参数返回 -1、0 或 1。 示例 - ($a <=> $b) 返回 -1。 |
4 | > (大于) 检查左操作数的值是否大于右操作数的值,如果大于则条件为真。 示例 - ($a > $b) 为假。 |
5 | < (小于) 检查左操作数的值是否小于右操作数的值,如果小于则条件为真。 示例 - ($a < $b) 为真。 |
6 | >= (大于或等于) 检查左操作数的值是否大于或等于右操作数的值,如果大于或等于则条件为真。 示例 - ($a >= $b) 为假。 |
7 | <= (小于或等于) 检查左操作数的值是否小于或等于右操作数的值,如果小于或等于则条件为真。 示例 - ($a <= $b) 为真。 |
以下是字符串相等运算符的列表。假设变量 $a 包含 "abc",变量 $b 包含 "xyz",那么让我们检查以下字符串相等运算符:
序号 | 运算符 & 描述 |
---|---|
1 | lt 如果左参数在字符串上小于右参数,则返回真。 示例 - ($a lt $b) 为真。 |
2 | gt 如果左参数在字符串上大于右参数,则返回真。 示例 - ($a gt $b) 为假。 |
3 | le 如果左参数在字符串上小于或等于右参数,则返回真。 示例 - ($a le $b) 为真。 |
4 | ge 如果左参数在字符串上大于或等于右参数,则返回真。 示例 - ($a ge $b) 为假。 |
5 | eq 如果左参数在字符串上等于右参数,则返回真。 示例 - ($a eq $b) 为假。 |
6 | ne 如果左参数在字符串上不等于右参数,则返回真。 示例 - ($a ne $b) 为真。 |
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 | | 二进制 OR 运算符如果位存在于任一操作数中,则将其复制。 示例 - ($a | $b) 将得到 61,即 0011 1101 |
3 | ^ 二进制 XOR 运算符如果位在一个操作数中设置但在另一个操作数中未设置,则将其复制。 示例 - ($a ^ $b) 将得到 49,即 0011 0001 |
4 | ~ 二进制一补码运算符是一元的,其作用是“翻转”位。 示例 - (~$a ) 将得到 -61,由于是有符号二进制数,因此在 2 的补码形式中为 1100 0011。 |
5 | << 二进制左移运算符。左操作数的值向左移动由右操作数指定的位数。 示例 - $a << 2 将得到 240,即 1111 0000 |
6 | >> 二进制右移运算符。左操作数的值向右移动由右操作数指定的位数。 示例 - $a >> 2 将得到 15,即 0000 1111 |
Perl 逻辑运算符
Perl 语言支持以下逻辑运算符。假设变量 $a 包含 true,变量 $b 包含 false,则:
序号 | 运算符 & 描述 |
---|---|
1 | and 称为逻辑 AND 运算符。如果两个操作数都为真,则条件为真。 示例 - ($a and $b) 为假。 |
2 | && C 风格的逻辑 AND 运算符如果位存在于两个操作数中,则将其复制到结果中。 示例 - ($a && $b) 为假。 |
3 | or 称为逻辑 OR 运算符。如果两个操作数中的任何一个非零,则条件为真。 示例 - ($a or $b) 为真。 |
4 | || C 风格的逻辑 OR 运算符如果位存在于任一操作数中,则将其复制。 示例 - ($a || $b) 为真。 |
5 | not 称为逻辑 NOT 运算符。用于反转其操作数的逻辑状态。如果条件为真,则逻辑 NOT 运算符将使其为假。 示例 - not($a and $b) 为真。 |
类引号运算符
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 | -> 箭头操作符主要用于从对象或类名中取消引用方法或变量。 示例 − $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