Perl 运算符
-
运算符
使用表达式 4+5等于9可以给出简单答案。这里4和5称为操作数,而+称为运算符。Perl 语言支持许多运算符类型,但是以下是重要且最常用的运算符列表-- 算术运算符
- 关系运算符
- 逻辑运算符
- 赋值运算符
- 按位运算符
- 逻辑运算符
- 类引用运算符
- 杂项运算符
让我们一一看一下所有的运算符。 -
算术运算符
假设变量$a持有10而变量$b持有20,那么以下是Perl算术运算符-操作符 描述 例子 + 加两个操作数。 $a + $b将得到30 - 从第一个减去第二个操作数。 $a-$b将得到-10 * 将两个操作数相乘。 $a * $b将给出200 / 将分子除以除分母。 $b / $a将给出2 % 模运算符和整数除法后的余数。 $b % $a将给出0 ** 对运算符执行指数(幂)计算 $a ** $b将得到10的20次方 范例:
尝试一下$a = 21; $b = 10; print "Value of \$a = $a and value of \$b = $b\n"; $c = $a + $b; print 'Value of $a + $b = ' . $c . "\n"; $c = $a - $b; print 'Value of $a - $b = ' . $c . "\n"; $c = $a * $b; print 'Value of $a * $b = ' . $c . "\n"; $c = $a / $b; print 'Value of $a / $b = ' . $c . "\n"; $c = $a % $b; print 'Value of $a % $b = ' . $c. "\n"; $a = 2; $b = 4; $c = $a ** $b; print 'Value of $a ** $b = ' . $c . "\n";
-
关系运算符
假设变量$a持有10,变量$b持有20,那么让我们检查以下数值关系运算符操作符 描述 例子 == 检查两个操作数的值是否相等。如果是,则条件变为真。 ($a == $b)为false。 != 检查两个操作数的值是否相等。如果值不相等,则条件为真。 ($a != $b)为true。 <=> 检查两个操作数的值是否相等,并根据左参数在数值上小于,等于或大于右参数而返回-1、0或1。 ($a <=> $b)为 -1。 > 检查左操作数的值是否大于右操作数的值。如果是,则条件变为真。 ($a > $b) 为false。 < 检查左操作数的值是否小于右操作数的值。如果是,则条件变为真。 ($a < $b)为true。 >= 检查左操作数的值是否大于或等于右操作数的值。如果是,则条件变为真。 ($a > = $b)为false。 <= 检查左操作数的值是否小于或等于右操作数的值。如果是,则条件变为真。 ($a <= $b)为true。 范例:
尝试一下$a = 21; $b = 10; print "Value of \$a = $a and value of \$b = $b\n"; if( $a == $b ) { print "$a == \$b is true\n"; } else { print "\$a == \$b is not true\n"; } if( $a != $b ) { print "\$a != \$b is true\n"; } else { print "\$a != \$b is not true\n"; } $c = $a <=> $b; print "\$a <=> \$b returns $c\n"; if( $a > $b ) { print "\$a > \$b is true\n"; } else { print "\$a > \$b is not true\n"; } if( $a >= $b ) { print "\$a >= \$b is true\n"; } else { print "\$a >= \$b is not true\n"; } if( $a < $b ) { print "\$a < \$b is true\n"; } else { print "\$a < \$b is not true\n"; } if( $a <= $b ) { print "\$a <= \$b is true\n"; } else { print "\$a <= \$b is not true\n"; }
字符串比较运算符,假设变量$a持有“abc”,变量$b持有“xyz”,那么让我们检查下面的字符串相等运算符−操作符 描述 例子 lt 如果left参数在字符串上小于right参数,则返回true。 ($a lt $b) 为 true. gt 如果left参数在字符串上大于right参数,则返回true。 ($a gt $b) 为 false. le 如果left参数在字符串上小于或等于right参数,则返回true。 ($a le $b) 为 true. ge 如果left参数在字符串上大于或等于right参数,则返回true。 ($a ge $b) 为 false. eq 如果left参数在字符串上等于right参数,则返回true。 ($a eq $b) 为 false. ne 如果left参数沿字符串方向不等于right参数,则返回true。 ($a ne $b) 为 true. cmp 返回-1、0或1,具体取决于左参数是按字符串方式小于,等于还是大于右参数。 ($a cmp $b) 为 -1. 范例:
尝试一下$a = "abc"; $b = "xyz"; print "Value of \$a = $a and value of \$b = $b\n"; if( $a lt $b ) { print "$a lt \$b is true\n"; } else { print "\$a lt \$b is not true\n"; } if( $a gt $b ) { print "\$a gt \$b is true\n"; } else { print "\$a gt \$b is not true\n"; } if( $a le $b ) { print "\$a le \$b is true\n"; } else { print "\$a le \$b is not true\n"; } if( $a ge $b ) { print "\$a ge \$b is true\n"; } else { print "\$a ge \$b is not true\n"; } if( $a ne $b ) { print "\$a ne \$b is true\n"; } else { print "\$a ne \$b is not true\n"; } $c = $a cmp $b; print "\$a cmp \$b returns $c\n";
-
赋值运算符
假设变量$a持有10,变量$b持有20,那么下面是Perl中可用的赋值运算符及其用法-操作符 描述 例子 = 简单的赋值运算符。将值从右侧操作数分配给左侧操作数 $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 范例:
尝试一下$a = 10; $b = 20; print "Value of \$a = $a and value of \$b = $b\n"; $c = $a + $b; print "After assignment value of \$c = $c\n"; $c += $a; print "Value of \$c = $c after statement \$c += \$a\n"; $c -= $a; print "Value of \$c = $c after statement \$c -= \$a\n"; $c *= $a; print "Value of \$c = $c after statement \$c *= \$a\n"; $c /= $a; print "Value of \$c = $c after statement \$c /= \$a\n"; $c %= $a; print "Value of \$c = $c after statement \$c %= \$a\n"; $c = 2; $a = 4; print "Value of \$a = $a and value of \$c = $c\n"; $c **= $a; print "Value of \$c = $c after statement \$c **= \$a\n";
-
按位运算符
按位运算符对位进行运算并执行逐位操作。&,|和^的真值表如下-p q p & q p | q p ^ q 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 假设$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
下表列出了$c支持的按位运算符。假设变量'$a'为60,变量'$b'为13,然后-操作符 描述 例子 & 如果两个操作数中都存在二进制$aND运算符,则会将一位复制到结果中。 ($a&$b)= 12,即0000 1100 | 如果任一操作数中存在二进制或运算符,则会对其进行复制。 ($a | $b)= 61,即0011 1101 ^ 如果在一个操作数中设置了该位,但不是在两个操作数中都设置了位,则二进制XOR运算符将复制该位。 ($a ^ $b)= 49,即0011 0001 ~ 二进制补码运算符是一元的,具有“翻转”位的作用。 (〜$a)=〜(60),即 -0111101 << 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 $a << 2 = 240,即1111 0000 >> 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 $a >> 2 = 15,即0000 1111 范例:
尝试一下use integer; $a = 60; $b = 13; print "Value of \$a = $a and value of \$b = $b\n"; $c = $a & $b; print "Value of \$a & \$b = $c\n"; $c = $a | $b; print "Value of \$a | \$b = $c\n"; $c = $a ^ $b; print "Value of \$a ^ \$b = $c\n"; $c = ~$a; print "Value of ~\$a = $c\n"; $c = $a << 2; print "Value of \$a << 2 = $c\n"; $c = $a >> 2; print "Value of \$a >> 2 = $c\n";
-
逻辑运算符
下表显示了$c语言支持的所有逻辑运算符。假设变量$a持有true,变量$b持有false,那么-操作符 描述 例子 and 称为逻辑AND运算符。如果两个操作数都为真,则条件为真。 ($a and $b)为false。 && 称为逻辑与运算符。如果两个操作数都不为零,则条件变为true。 ($a && $b)为false。 or 称为逻辑或运算符。如果两个操作数中的任何一个都不为零,则条件为真。 ($a or $b)为true。 || 称为逻辑或运算符。如果两个操作数中的任何一个都不为零,则条件变为true。 ($a || $b)为true。 not 称为逻辑非运算符。用于反转其操作数的逻辑状态。如果条件为真,则逻辑非运算符将为假。 !($a && $b)为false。 范例:
尝试一下$a = true; $b = false; print "Value of \$a = $a and value of \$b = $b\n"; $c = ($a and $b); print "Value of \$a and \$b = $c\n"; $c = ($a && $b); print "Value of \$a && \$b = $c\n"; $c = ($a or $b); print "Value of \$a or \$b = $c\n"; $c = ($a || $b); print "Value of \$a || \$b = $c\n"; $a = 0; $c = not($a); print "Value of not(\$a)= $c\n";
-
类引用运算符
Perl语言支持以下类似Quote的运算符。在下表中,{}代表您选择的任何一对定界符。-操作符 描述 例子 q {} 用单引号将字符串引起来 q {abcd} 得 'abcd' qq {} 用双引号将字符串引起来 qq {abcd} 得 "abcd" qx {} 用反引号引起来的字符串 qx {abcd} 得 `abcd` 范例:
尝试一下$a = 10; $b = q{a = $a}; print "Value of q{a = \$a} = $b\n"; $b = qq{a = $a}; print "Value of qq{a = \$a} = $b\n"; # unix command execution $t = qx{date}; print "Value of qx{date} = $t\n";
-
杂项运算符
Perl语言支持以下杂类运算符。假设变量$a持有10而变量b持有20然后-操作符 描述 例子 . 二进制运算符点(.)连接两个字符串 如果$a=“abc”,$b =“def”,则$a.$b将 得到 “abcdef” x 重复运算符x返回由左操作数组成的字符串,该字符串重复了右操作数指定的次数。 ('-' x 3)将得到 ---。 .. 范围运算符..返回从左值到右值计数(逐个递增)的值列表 (2..5)将得到(2,3,4,5) ++ 自动增量运算符将整数值增加一 $a++将给出11 -- 自动减量运算符将整数值减一 $a--将给出9 -> 箭头运算符主要用于从对象或类名中解引用方法或变量 $obj->$a是从对象$obj访问变量$a的示例。 范例:
尝试一下$a = "abc"; $b = "def"; print "Value of \$a = $a and value of \$b = $b\n"; $c = $a . $b; print "Value of \$a . \$b = $c\n"; $c = "-" x 3; print "Value of \"-\" x 3 = $c\n"; @c = (2..5); print "Value of (2..5) = @c\n"; $a = 10; $b = 15; print "Value of \$a = $a and value of \$b = $b\n"; $a++; $c = $a ; print "Value of \$a after \$a++ = $c\n"; $b--; $c = $b ; print "Value of \$b after \$b-- = $c\n";
-
运算符优先级
下表列出了从最高优先级到最低优先级的所有运算符。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
范例:
尝试一下$a = 20; $b = 10; $c = 15; $d = 5; $e; print "Value of \$a = $a, \$b = $b, \$c = $c and \$d = $d\n"; $e = ($a + $b) * $c / $d; print "Value of (\$a + \$b) * \$c / \$d is = $e\n"; $e = (($a + $b) * $c )/ $d; print "Value of ((\$a + \$b) * \$c) / \$d is = $e\n"; $e = ($a + $b) * ($c / $d); print "Value of (\$a + \$b) * (\$c / \$d ) is = $e\n"; $e = $a + ($b * $c ) / $d; print "Value of \$a + (\$b * \$c )/ \$d is = $e\n";