演算子は、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 乗です |
上記のプログラムを実行した出力結果は次のとおりです。
$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 に設定します。
| オペレーター | 説明する | 例 |
|---|---|---|
| == | 2 つのオペランドの値が等しいかどうかを確認し、等しい場合は条件が true、そうでない場合は false になります。 | ($a == $b) は 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 を返します。 |
上記のプログラムを実行した出力結果は次のとおりです。
$a = 10 , $b = 20$a == $b 結果は false$a != $b 結果は true$a <=> $b Return -1$a > $b 結果は false$a >= $b 結果は false $a < $b 結果は true$a <= $b 結果は true
次の表の例では、変数 $a を「abc」に、$b を「xyz」に設定し、比較演算子を使用して結果を計算します。
| オペレーター | 説明する | 例 |
|---|---|---|
| それ | 左側の文字列が右側の文字列より小さいかどうかを確認し、小さい場合は true を返し、そうでない場合は false を返します。 | ($a lt $b) は true を返します。 |
| GT | 左側の文字列が右側の文字列より大きいかどうかを確認し、大きい場合は true を返し、そうでない場合は false を返します。 | ($a gt $b) は false を返します。 |
| ル | 左側の文字列が右側の文字列以下であるかどうかを確認し、そうである場合は true を返し、それ以外の場合は false を返します。 | ($a le $b) は true を返します |
| げ | 左側の文字列が右側の文字列以上であるかどうかを確認し、そうである場合は true を返し、そうでない場合は false を返します。 | ($a ge $b) は false を返します。 |
| 等価 | 左側の文字列が右側の文字列と等しいかどうかを確認し、等しい場合は true を返し、そうでない場合は false を返します。 | ($a eq $b) は false を返します。 |
| ね | 左側の文字列が右側の文字列と等しいかどうかを確認し、等しい場合は true を返し、そうでない場合は false を返します。 | ($a ne $b) は true を返します |
| cmp | 左側の文字列が右側の文字列より大きい場合は 1、等しい場合は 0、左側の文字列が右側の文字列より小さい場合は -1 を返します。 | ($a cmp $b) は -1 を返します。 |
上記のプログラムを実行した出力結果は次のとおりです。
$a = abc、$b = xyzabc 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 に等しい |
| -= | 減算 AND 代入演算子は、左オペランドから右オペランドを減算した結果を左オペランドに代入します。 | $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 と等しい |
上記のプログラムを実行した出力結果は次のとおりです。
$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 でサポートされているビット単位の演算子を次の表に示します。
| オペレーター | 説明する | 例 |
|---|---|---|
| & | 両方のオペランドが存在する場合、バイナリ AND 演算子は結果に 1 ビットをコピーします。 | ($a & $b) は 12 になります。これは 2 進数で 0000 1100 になります。 |
| | | バイナリ OR 演算子は、どちらかのオペランドに存在する場合、結果に 1 ビットをコピーします。 | ($a | $b) は 61 を取得します。これは 2 進数で 0011 1101 です。 |
| ^ | バイナリ XOR 演算子は、オペランドの 1 つにビットが存在し、両方には存在しない場合、結果にビットをコピーします。 | ($a ^ $b) は 49 になります。これは 2 進数では 0011 0001 になります。 |
| ~ | 2 項補数演算子は、ビットを「反転」する効果のある単項演算子です。つまり、0 が 1 になり、1 が 0 になります。 | (~$a ) は -61 を返します。これは 2 進数で 1100 0011 であり、符号付き 2 進数の 1 の補数形式です。 |
| << | バイナリ左シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ左にシフトされます。 | $a << 2 は 240 を返します。これは 2 進数で 1111 0000 です。 |
| >> | 2 項右シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ右にシフトされます。 | $a >> 2 は 15 を取得します。これはバイナリでは 0000 1111 です。 |
上記のプログラムを実行した出力結果は次のとおりです。
$a = 60 、 $b = 13$a & $b = 12$a | $b = 61$a ^ $b = 49~$a = -61$a << 2 = 240$a >> 2 = 15
Perl の論理演算子を次の表に示します。
表の例では、変数 $a を true に設定し、$b を false に設定します。
| オペレーター | 説明する | 例 |
|---|---|---|
| そして | 論理 AND 演算子。両方のオペランドが true の場合、条件は true になります。 | ($a と $b) は false です。 |
| && | C スタイルの論理 AND 演算子。両方のオペランドが true の場合、条件は true になります | ($a && $b) は false です。 |
| または | 論理和演算子。 2 つのオペランドのいずれかが 0 以外の場合、条件は true になります。 | ($a または $b) は true です。 |
| || | C スタイルの論理 OR 演算子。 2 つのオペランドのいずれかが 0 以外の場合、条件は true になります。 | ($a || $b) は true です。 |
| ない | 論理否定演算子。オペランドの論理状態を反転するために使用されます。条件が true の場合、論理 NOT 演算子により条件が false になります。 | not($a と $b) は true です。 |
上記のプログラムを実行した出力結果は次のとおりです。
$a = true 、 $b = false$a および $b = false$a && $b = false$a または $b = true$a || $b = truenot($a)= 1
Perl の引用演算子を次の表に示します。
| オペレーター | 説明する | 例 |
|---|---|---|
| q{ } | 文字列に一重引用符を追加する | q{abcd} の結果は「abcd」になります |
| qq{ } | 文字列に二重引用符を追加する | qq{abcd} の結果は「abcd」になります |
| qx{ } | 文字列にバッククォートを追加する | qx{abcd} の結果は「abcd」になります |
上記のプログラムを実行した出力結果は次のとおりです。
q{a = $a} = a = $aqq{a = $a} = a = 10qx{date} = 2016 年 6 月 10 日金曜日 16:22:33 CST上で説明した演算子に加えて、Perl は次の演算子もサポートしています。
| オペレーター | 説明する | 例 |
|---|---|---|
| 。 | ピリオド (.) は 2 つの文字列を連結するために使用されます。 | $a="run", $b="oob" の場合、 $a.$b の結果は "codercto" になります。 |
| × | x 演算子は、文字列が繰り返される回数を返します。 | ('-' x 3) 出力は --- です。 |
| .. | .. は範囲演算子です。 | (2..5) 出力結果は (2, 3, 4, 5) です。 |
| ++ | インクリメント演算子、整数値が 1 ずつ増加します | $a =10、$a++ は 11 を出力します |
| -- | デクリメント演算子。整数値を 1 ずつデクリメントします。 | $a =10、$a-- 出力は 9 |
| -> | 矢印はクラスのメソッドを指定するために使用されます | $obj->$a は、オブジェクト $obj の $a メソッドを表します。 |
上記のプログラムを実行した出力結果は次のとおりです。
$a = 実行、$b = oob$a 。$b = codercto"-" x 3 = ---(2..5) = 2 3 4 5$a = 10 、$b = 15$a $a++ を実行= 11$b $b を実行 -- = 14
次の表に、Perl 言語の演算子の優先順位を示します。
| オペレーター | 結合性 |
|---|---|
| ++、-- | なし |
| ~、~、! | 右から左へ |
| ** | 右から左へ |
| =~、!~ | 左から右へ |
| *、/、%、x | 左から右へ |
| +、-、. | 左から右へ |
| <<、>> | 左から右へ |
| -e、-r、 | なし |
| <、<=、>、>=、lt、le、gt、ge | 左から右へ |
| ==、!=、<=>、eq、ne、cmp | 左から右へ |
| & | 左から右へ |
| |、^ | 左から右へ |
| && | 左から右へ |
| || | 左から右へ |
| .. | 左から右へ |
| ? そして : | 右から左へ |
| =、+=、-=、*=、 | 右から左へ |
| 他の | |
| 、 | 左から右へ |
| ない | 左から右へ |
| そして | 左から右へ |
| または、xor | 左から右へ |
上記のプログラムを実行した出力結果は次のとおりです。
$a = 20、$b = 10、$c = 15、$d = 5($a + $b) * $c / $d = 90(($a + $b) * $c) / $d = 90($a + $b) * ($c / $d ) = 90$a + ($b * $c )/ $d = 50