什么是运算符?
可以使用表达式 4 + 5等于9 给出简单答案.这里4和5被称为操作数,+被称为操作符. Perl语言支持许多运算符类型,但以下是重要且最常用的运算符列表 :
算术运算符
平等运算符
逻辑运算符
赋值运算符
按位运算符
逻辑运算符
类似报价的运算符
杂项运算符
让我们逐个查看所有运算符.
Perl算术运算符
假设变量$ a成立10和变量$ b保持20,然后是Perl算术运算符 :
Sr.No. | 运算符&说明 |
---|---|
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 Equality Operators
这些也称为关系运算符.假设变量$ a保持10并且变量$ b保持20然后,让我们检查以下数字相等运算符 :
Sr.No. | 运算符&说明 |
---|---|
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"然后,让我们检查以下字符串相等运算符 :
Sr.No. | 运算符&说明 |
---|---|
1 | lt 如果左参数的字符串小于右参数,则返回true. 示例&minus ; ($ a lt $ b)是真的. |
2 | gt 如果左参数的字符串大于右参数,则返回true. 示例 : ($ a gt $ b)是假的. |
3 | le 如果左参数的字符串小于或等于右参数,则返回true. 示例 : ($ a le $ b)是真的. |
4 | ge 如果左参数的字符串大于或等于右参数,则返回true. 示例 : ($ a ge $ b)是假的. |
5 | eq 如果左参数的字符串等于右参数,则返回true. 示例 : ($ a eq $ b)是假的. |
6 | ne 如果左参数stringwise不等于右参数,则返回true. 示例 : ($ a ne $ b)是真的. |
7 | cmp 返回-1,0或1,具体取决于左参数是否是字符串减去比,等于或大于正确的论点. 示例 : ($ a cmp $ b)是-1. |
Perl分配运算符
假设变量$ a保持10,变量$ b保持20,然后下面是Perl中可用的赋值运算符及其用法 :
Sr.No. | 运营商&说明 |
---|---|
1 | = 简单赋值运算符,将右侧操作数的值分配给左侧操作数 示例&minus ; $ c = $ a + $ b将$ a + $ b的值分配到$ c |
2 | + = 添加AND赋值运算符,它将右操作数添加到左操作数并将结果赋给左操作数 示例 : $ c + = $ a相当于$ c = $ c + $ a |
3 | - = 减去AND赋值运算符,它从左操作数中减去右操作数并将结果分配给左操作数 示例 : $ c - = $ a相当于$ c = $ c - $ a |
4 | * = 乘以AND赋值运算符,它将右操作数与左操作数相乘并将结果分配给左操作数 示例 : $ c * = $ a相当于$ c = $ c * $ a |
5 | /= 除以AND赋值运算符,它将左操作数除以右操作数并将结果分配给左操作数 示例 : $ 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语言支持以下Bitwise运算符,假设$ a = 60;和$ b = 13
Sr.No. | 运算符&说明 |
---|---|
1 | & 如果两个操作数都存在,二进制AND运算符会将结果复制到结果中. 示例 : ($ a& $ b)将给出12,即0000 1100 |
2 | | 二进制OR运算符如果在eather操作数中存在,则复制一点. 示例 : ($ 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保持为真,变量$ b保持假,然后:
Sr.No. | 运算符&说明 |
---|---|
1 | 和 被称为逻辑AND运算符.如果两个操作数都为真,则条件变为真. 示例 : ($ a和$ b)是假的. |
2 | && C样式逻辑AND运算符如果两个操作数都存在,则将一个位复制到结果中. 示例 : ($ a&& $ b)为假. |
3 | 或 被称为逻辑OR运算符.如果两个操作数中的任何一个非零,则条件变为真. 示例 : ($ a或$ b)为真. |
4 | || C样式的逻辑OR运算符如果在eather操作数中存在,则复制一点. 示例 : ($ a || $ b)为真. |
5 | 不是 被称为逻辑非运营商.用于反转其操作数的逻辑状态.如果条件为真,那么Logical NOT运算符将为false. 示例 : 不是($ a和$ b)是真的. |
引用类似的运算符
Perl语言支持以下类似Quote的运算符.在下表中,{}表示您选择的任何一对分隔符.
Sr.No. | 运算符&说明 |
---|---|
1 | q {} 用单引号括起一个字符串 示例 : q {abcd}给出'abcd' |
2 | qq {} 用双引号括起一个字符串 示例 : qq {abcd}给出"abcd" |
3 | qx {} 用反转引号括起一个字符串 示例 : qx {abcd}给出`abcd` |
杂项运算符
Perl语言支持以下其他运算符.假设变量a保持10,变量b保持20然后:
Sr.No. | 运算符&说明 |
---|---|
1 | . 二进制运算符点(.)连接两个字符串. 示例 : 如果$ a ="abc",$ b ="def"则$ a.$ b将给出"abcdef" |
2 | x 重复运算符x返回一个由左操作数组成的字符串重复右操作数指定的次数. 示例 : (' - 'x 3)将给---. |
3 | .. 范围运算符..返回一个值列表(从1开始)左边的值到正确的值 示例 : (2..5)将给(2,3,4,5) |
4 | ++ 自动增量运算符将整数值增加一个 示例 : $ a ++将给出11 |
5 | - Auto Decrement运算符将整数值减一[ 示例 : $ a--将给出9 |
6 | - > 箭头运算符主要用于从对象或类名解除引用方法或变量 示例 : $ obj-> $ a是从对象$ obj访问变量$ a的示例. |
Perl运算符优先级
下表列出了从最高优先级到最低优先级的所有运算符.
leftterms and list operators (leftward)left->nonassoc++ --right**right! ~ \ and unary + and -left=~ !~left* / % xleft+ - .left<< >>nonassocnamed unary operatorsnonassoc< > <= >= lt gt le genonassoc== != <=> eq ne cmp ~~left&left| ^left&&left|| //nonassoc.. ...right?:right= += -= *= etc.left, =>nonassoclist operators (rightward)rightnotleftandleftor xor