Perl 演算子
演算子は、3+2=5 などの特定の数学的演算または論理演算を実行するようにコンパイラーに指示する記号です。
Perl 言語には豊富な演算子が組み込まれています。一般的に使用される演算子をいくつか見てみましょう:
算術演算子
比較演算子
論理演算子
代入演算子
-
ビット演算子
引用演算子
その他の演算子
演算子の優先順位
算術演算子
テーブルの例では、変数 $a を 10 に設定し、$b は 20 に設定します。
演算子 | 説明 | 例 |
---|---|---|
+ | 加算演算 | $a + $b 結果は30 |
- | 減算演算 | $ a - $b の結果は - 10 |
* | 乗算演算 | $a * $bの結果は200 |
/ | 除算演算 | $b / $aの結果は2 |
動作、除算後の余り | $b % $a の結果は 0 | |
乗 | $a**$b となり、結果は 10 の 20 乗になります |
#!/usr/bin/perl
$a = 10;
$b = 20;
print "$a = $a , $b = $b\n";
$c = $a + $b;
print '$a + $b = ' . $c . "\n";
$c = $a - $b;
print '$a - $b = ' . $c . "\n";
$c = $a * $b;
print '$a * $b = ' . $c . "\n";
$c = $a / $b;
print '$a / $b = ' . $c . "\n";
$c = $a % $b;
print '$a % $b = ' . $c. "\n";
$a = 2;
$b = 4;
$c = $a ** $b;
print '$a ** $b = ' . $c . "\n";
上記 プログラム実行の出力結果は次のとおりです: $a = 10 , $b = 20 $a + $b = 30 $a - $b = -10 $a * $b = 200 $a / $b = 0.5 $a % $b = 10 $a ** $b = 16
比較演算子 テーブルの例では、変数 $a を 10 に、$b を 20 に設定します。
Description | Instance | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2 つのオペランドの値が等しいかどうかをチェックし、等しい場合は条件が true、それ以外の場合は false です。 | ($a == $b) is false | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
は、2 つのオペランドの値が等しいかどうかをチェックし、等しくない場合は条件が true、等しくない場合は false になります。 | ($a != $b) は true です。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 つのオペランドの値が等しいかどうかを確認し、左側の数値が右側の数値より小さい場合は -1 が返され、等しい場合は 0 が返されます。左側の数値が右側の数値より大きい場合、1 が返されます。 | ($a <=> $b) は -1 を返します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
左のオペランドの値が右のオペランドの値より大きいかどうかを確認し、大きい場合は条件が true、そうでない場合は false になります。 | ($a > $b) は false を返します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
左のオペランドの値が右のオペランドの値より小さいかどうかを確認し、小さい場合は条件が true、そうでない場合は false を返します。 | ($a < $b) は true を返します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
左のオペランドの値が右のオペランドの値以上であるかどうかを確認し、そうである場合は条件が true であり、それ以外の場合は false を返します。 | ($a >= $b) は false を返します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
左のオペランドの値が右のオペランドの値以下であるかどうかを確認し、そうであれば条件は true、それ以外の場合は false を返します。 。 | ($a <= $b) は true を返します。 |
Operator | Description | Instance |
---|---|---|
lt | 左側の文字列が右側の文字列より小さいかどうかを確認し、小さい場合は true を返し、そうでない場合は false を返します。 | ($a lt $b) は true を返します。 |
gt | 左側の文字列が右側の文字列より大きいかどうかを確認し、大きい場合は true を返し、そうでない場合は false を返します。 | ($a gt $b) は false を返します。 |
le | 左側の文字列が右側の文字列以下であるかどうかを確認し、そうであれば true を返し、それ以外の場合は false を返します。 | ($a le $b) returns true |
ge | 左側の文字列が右側の文字列以上であるかどうかを確認し、そうであればtrueを返し、それ以外の場合はfalseを返します。 | ($a ge $b) は false を返します。 |
eq | 左側の文字列が右側の文字列と等しいかどうかを確認し、等しい場合は true を返し、そうでない場合は false を返します。 | ($a eq $b) は false を返します。 |
ね | 左側の文字列が右側の文字列と等しくないかを確認し、等しければtrueを返し、等しくない場合はfalseを返します。 | ($a ne $b) は true を返します |
cmp | 左側の文字列が右側の文字列より大きい場合は 1 を返し、等しい場合は 0 を返し、文字列が次の場合は 0 を返します。左側の文字列が右側の文字列より小さい場合は、-1 を返します。 | ($a cmp $b) は -1 を返します。 |
例
#!/usr/bin/perl $a = "abc"; $b = "xyz"; print "$a = $a ,$b = $b\n"; if( $a lt $b ){ print "$a lt $b 返回 true\n"; }else{ print "$a lt $b 返回 false\n"; } if( $a gt $b ){ print "$a gt $b 返回 true\n"; }else{ print "$a gt $b 返回 false\n"; } if( $a le $b ){ print "$a le $b 返回 true\n"; }else{ print "$a le $b 返回 false\n"; } if( $a ge $b ){ print "$a ge $b 返回 true\n"; }else{ print "$a ge $b 返回 false\n"; } if( $a ne $b ){ print "$a ne $b 返回 true\n"; }else{ print "$a ne $b 返回 false\n"; } $c = $a cmp $b; print "$a cmp $b 返回 $c\n";
上記のプログラムの実行出力は次のとおりです:
$a = abc ,$b = xyz abc lt $b 返回 true $a gt $b 返回 false $a le $b 返回 true $a ge $b 返回 false $a ne $b 返回 true $a cmp $b 返回 -1
代入演算子
テーブルの例では、変数 $a を 10 に、$b を 20 に設定します。
演算子 | 説明 | 例 |
---|---|---|
= | 単純な代入演算子、右オペランドの値を左オペランドに代入します | $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 |
%= | モジュロと代入演算子、2 つのオペランドのモジュロを見つけて、それを左のオペランドに代入します | $c %= $a は $c = $c % a |
**= | べき乗と代入演算子。2 つのオペランドのべき乗を求め、それを左のオペランドに代入します | $c **= $a は $c = $c ** $a |
例
#!/usr/bin/perl $a = 10; $b = 20; print "$a = $a ,$b = $b\n"; $c = $a + $b; print "赋值后 $c = $c\n"; $c += $a; print "$c = $c ,运算语句 $c += $a\n"; $c -= $a; print "$c = $c ,运算语句 $c -= $a\n"; $c *= $a; print "$c = $c ,运算语句 $c *= $a\n"; $c /= $a; print "$c = $c ,运算语句 $c /= $a\n"; $c %= $a; print "$c = $c ,运算语句 $c %= $a\n"; $c = 2; $a = 4; print "$a = $a , $c = $c\n"; $c **= $a; print "$c = $c ,运算语句 $c **= $a\n";
上記のプログラム実行の出力結果は次のとおりです:
$a = 10 ,$b = 20 赋值后 $c = 30 $c = 40 ,运算语句 $c += $a $c = 30 ,运算语句 $c -= $a $c = 300 ,运算语句 $c *= $a $c = 30 ,运算语句 $c /= $a $c = 0 ,运算语句 $c %= $a $a = 4 , $c = 2 $c = 16 ,运算语句 $c **= $a
ビット単位の演算
ビット演算子はビットに作用し、ビットごとに演算を実行します。
$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 でサポートされているビット演算子を以下の表に示します。
Operator | Description | Example |
---|---|---|
& | 両方のオペランドに存在する場合、バイナリ AND 演算子は 1 ビットを結果にコピーします。 | ($a & $b) は 12 を返します。これは 2 進数では 0000 1100 です |
| | どちらかのオペランドに存在する場合、2 進 OR 演算子は 1 ビットを結果にコピーします。 | ($a | $b) は 61 を取得します。これは、バイナリでは 0011 1101 です |
^ | オペランドの一方に存在し、両方には存在しない場合、バイナリ XOR 演算子は 1 つを結果にコピーします。 | ($a ^ $b) は 49 を返します。これは 2 進数では 0011 0001 です |
~ | 2 の補数演算子は、ビットを「反転」する効果がある単項演算子です。 | (~$a ) は -61 を返します。これは、2 進数、2 の補数、符号付き 2 進数で 1100 0011 です。 |
<< | 二項左シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ左にシフトされます。 | $a << 2 は 240 を取得します。これは 2 進数で 1111 0000 になります |
>> | 2 進右シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ右にシフトされます。 | $a >> 2 は 15 を取得します。これは、バイナリで 0000 1111 になります。 |
演算子
説明例and
($a と $b) は false です。 | && | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
($a && $b) が false の場合。 | or | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
($a または $b) は true です。 | || | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
($a || $b) は true です。 | not | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
not($a と $b) は true です。 | 例#!/usr/bin/perl use integer; $a = 60; $b = 13; print "$a = $a , $b = $b\n"; $c = $a & $b; print "$a & $b = $c\n"; $c = $a | $b; print "$a | $b = $c\n"; $c = $a ^ $b; print "$a ^ $b = $c\n"; $c = ~$a; print "~$a = $c\n"; $c = $a << 2; print "$a << 2 = $c\n"; $c = $a >> 2; print "$a >> 2 = $c\n"; 上記プログラムの実行の出力結果は次のとおりです: $a = 60 , $b = 13 $a & $b = 12 $a | $b = 61 $a ^ $b = 49 ~$a = -61 $a << 2 = 240 $a >> 2 = 15 引用符演算Perlの引用符演算子を以下の表に示します。
例#!/usr/bin/perl $a = true; $b = false; print "$a = $a , $b = $b\n"; $c = ($a and $b); print "$a and $b = $c\n"; $c = ($a && $b); print "$a && $b = $c\n"; $c = ($a or $b); print "$a or $b = $c\n"; $c = ($a || $b); print "$a || $b = $c\n"; $a = 0; $c = not($a); print "not($a)= $c\n"; 上記のプログラムの実行出力は次のとおりです: $a = true , $b = false $a and $b = false $a && $b = false $a or $b = true $a || $b = true not($a)= 1 その他の演算子上記の演算子に加えて、Perl は次の演算子もサポートしています:
例#!/usr/bin/perl $a = 10; $b = q{a = $a}; print "q{a = $a} = $b\n"; $b = qq{a = $a}; print "qq{a = $a} = $b\n"; # 使用 unix 的 date 命令执行 $t = qx{date}; print "qx{date} = $t\n"; 上記のプログラムの実行出力は次のとおりです: q{a = $a} = a = $a qq{a = $a} = a = 10 qx{date} = 2016年 6月10日 星期五 16时22分33秒 CST 演算子の優先順位次の表は、Perl言語の演算子の優先順位を示しています:
|