Perlで使用する演算子
プログラムを書いた事が無いという方の為に、プログラムで使用する演算子がどのような動作をするか簡単な例を説明しておきます。下の例をご覧になって下さい。
$a = $b + $c ;
プログラムを記述した事の無い方には、変数 $aの値と変数 $b、$cの和が等しい。と言う意味にも捉えられるかもしれませんが、これはプログラムの世界では変数 $b と $c の和を変数 $aへ代入する。と言う意味になります。「もう知っているよ!!」とおっしやる方も多いと思いますので、そういう方はどんどん進んでいって下さい。
また、Perlで使用する演算子は C言語の演算子とよく似ています。Visual Basicなど、他の言語を使用されていた方は使用していない演算子も出てくるので覚えておいて下さい。
算術演算子
算術演算子とは基本的に数値に対し行う演算子になります。 (+、-、*、/以外にも複数あり)
| 例 |
説明 |
| $a + $b |
$aと$bを足す |
| $a - $b |
$aから$bを引く |
| $a * $b |
$aと$bをかける |
| $a / $b |
$aを$bで割る |
| $a % $b |
$aを$bで割った余り |
| $a ** $b |
$aを$b乗する |
| $a++ |
$aの値を1増やす(インクリメント) |
| $a-- |
$aの値を1減らす(デクリメント) |
|
インクリメント、デクリメントでは演算子の位置により意味が異なります( 下参照 )
$a = 10 ;
print $a++ ; # 表示( 10 )
$a = 10 ;
print ++$a ; # 表示( 11 )
インクリメント演算子が前にある時は、処理が行われる前にインクリメントが実行されて結果に対して処理が行なわれます。逆に演算子が後ろにある場合は処理が行われた後インクリメントが実行されます。
代入演算子
ある変数に値を代入する時に使用します。
| 例 |
説明 |
| $a = $b |
$bを$aに代入する |
| $a += $b |
$aと$bを足したものを$aへ代入 |
| $a -= $b |
$aから$bを引いたものを$aへ代入 |
| $a *= $b |
$aと$bをかけたものを$aへ代入 |
| $a /= $b |
$aを$bで割ったものを$aへ代入 |
| $a %= $b |
$aを$bで割った余りを$aへ代入 |
| $a **= $b |
$aを$b乗したものを$aへ代入 |
| $a .= $b |
$aと$bを連結したものを$aへ代入(文字列) |
|
ビット演算子
ビット単位での処理を行う演算子です。
| 例 |
説明 |
| $a | $b |
$aと$bのOR |
| $a & $b |
$aと$bのAND |
| ~$a |
$aの否定(全てのビットの反転) |
| $a << 1 |
$$aを左に1ビットシフト (2倍) |
| $a >> 1 |
$aを左に1ビットシフト (1/2) |
|
[ ビット演算子の例 ]
$a = 100 ;
print $a << 1 ; # 表示( 200 )
$a = 100 ;
print $a >> 2 ; # 表示( 50 )
比較演算子
Perlでは変数に文字、数値の区別が無いため、文字列として比較する時と数値として比較する時でプログラマが想定した結果と異なる場合があります。( 下記参照 )このため 数値用比較演算子 と 文字列用比較演算子 が別々に用意されています。
if ( 5 < 10 )
数値として比較すると → ( 真 )
文字として比較すると → ( 偽 )
if ( 1 == 1.0 )
数値として比較すると → ( 真 )
文字として比較すると → ( 偽 )
Perlにおける真と偽
偽と評価されるもの
0、長さ 0の文字列、未定義(変数に代入も何もしていない状態)
真と評価されるもの
上記のもの意外全て
[ サンプル ]
if ( 0 ) # 偽 → 0は偽
if ( 1 ) # 真 → 0以外は真と評価されます
if ( 0.0 ) # 偽 → 数値として評価されます
if ( "0.0" ) # 真 → 文字列として評価されます
if ( "" ) # 偽 → 長さ0の文字列
if ( "a" ) # 真 → 文字、文字列は真
数値用比較演算子
| 名前 |
内容 |
| $a == $b |
等しい時に真 |
| $a != $b |
等しくない時に真 |
| $a > $b |
$a が $b より大きい時に真 |
| $a >= $b |
$a が $b 以上の時に真 |
| $a < $b |
$a が $b より小さい時に真 |
| $a <= $b |
$a が $b 以下の時に真 |
|
文字用比較演算子
| 名前 |
内容 |
| $a eq $b |
等しい時に真 |
| $a ne $b |
等しくない時に真 |
| $a gt $b |
$a が $b より大きい時に真 |
| $a ge $b |
$a が $b 以上の時に真 |
| $a lt $b |
$a が $b より小さい時に真 |
| $a le $b |
$a が $b 以下の時に真 |
|
論理演算子
論理演算子は通常その式を評価して真であるか、偽であるかという値を返します。 しかし Perlでは C言語や Visual Basicなどとは異なり、真偽値を返すのでなく、 最後に評価された値を返します。
| 名前 |
内容 |
| $a && $b |
左辺が真なら右辺の値を、左辺が偽の時左辺の値を返します |
| $a || $b |
左辺が真ならその値を、左辺が偽の時右辺の値を返します |
| !$a |
$aの否定。偽の時に真となります |
|
# 左辺が偽なので左辺の値 "0"
print 1 - 1 && 2 + 2 ;
# 左辺が真なので右辺の値 "0"
print 1 + 1 && 2 - 2 ;
# 左辺が真なので右辺の値 "4"
print 1 + 1 && 2 + 2 ;
# 左辺が偽なので右辺の値 "4"
print 1 - 1 | | 2 + 2 ;
# 左辺が真なので左辺の値 "2"
print 1 + 1 | | 2 - 2 ;
# 左辺が真なので左辺の値 "2"
print 1 + 1 | | 2 + 2 ;
# 真なので偽の値 "未定義"
print !1 ;
# 偽なので真の値 "1"
print !0 ;
# 偽なので真の値 "1"
print !"" ;
条件演算子
条件演算子を使用しない
if ( 条件式 ) {
代入変数 = 真 ;
} else {
代入変数 = 偽 ;
}
条件演算子使用
< 代入変数 > = < 条件式 > ? < 真 > : < 偽 >
if文などを用いるよりスッキリする??お好みです( ̄▽ ̄)V
|