演算子

■ 演算子

◆ 算術演算子
$xx = 5 + 2;        # 足し算
$xx = 5 - 2;        # 引き算
$xx = 5 * 2;        # 掛け算
$xx = 5 / 2;        # 割り算
$xx = 5 % 2;        # 5を2で割った余り(=1)
$xx = 5 ** 2;       # 5の2乗(=25)

$xx++;              # $xxの値が1加算される(加算前の値を返す)
$xx--;              # $xxの値が1減算される(減算前の値を返す)
++$xx;              # $xxの値が1加算される(加算後の値を返す)
--$xx;              # $xxの値が1減算される(減算後の値を返す)

$xx += 2;           # $xx = $xx + 2 と同じ
$xx -= 2;           # $xx = $xx - 2 と同じ
$xx *= 2;           # $xx = $xx * 2 と同じ
$xx /= 2;           # $xx = $xx / 2 と同じ
$xx %= 2;           # $xx = $xx % 2 と同じ
$xx **= 2;          # $xx = $xx ** 2; と同じ
◆ 算術比較演算子
if ($xx == $yy)                # $xx と $yy が等しければ
if ($xx != $yy)                # $xx と $yy が異なっていれば
if ($xx < $yy)                 # $xx が $yy より小さければ
if ($xx > $yy)                 # $xx が $yy より大きければ
if ($xx <= $yy)                # $xx が $yy 以下であれば
if ($xx >= $yy)                # $xx が $yy 以上であれば
if ($xx <=> $yy)               # 比較結果を -1, 0, 1 のいずれかで返す
◆ 条件演算子
$xx = ($a < 5) ? "OK" : "NG";  # $a が 5以下なら "OK" さもなくば "NG"
◆ 文字列演算子
$xx = "AAA" . "BBB"; # 文字列を連結する
$xx = "ABC" x 3;     # $xx には "ABCABCABC" が代入される
◆ 文字列比較演算子
if ($xx eq $yy)     # $xx と $yy が等しければ(EQual)
if ($xx ne $yy)     # $xx と $yy が異なっていれば(Not Equal)
if ($xx lt $yy)     # $xx が $yy より小さければ(Less Than)
if ($xx gt $yy)     # $xx が $yy より大きければ(Grater Than)
if ($xx le $yy)     # $xx が $yy 以下であれば(Less or Equal)
if ($xx ge $yy)     # $xx が $yy 以上であれば(Grator or Equal)
if ($xx cmp $yy)    # 比較結果を -1, 0, 1 のいずれかで返す(COMpare)
if ($xx =~ /ABC/)   # $xx が正規表現 ABC とマッチすれば
if ($xx !~ /ABC/)   # $xx が正規表現 ABC とマッチしなければ
◆ 論理演算子
if (($xx == 2) && ($yy == 3))  # $xx が 2、かつ、$yy が 3 であれば
if (($xx == 2) || ($yy == 3))  # $xx が 2、もしくは、$yy が 3 であれば
if (!($xx == 2))               # $xx が 2 でなければ
if (($xx == 2) and ($yy == 3)) # $xx が 2、かつ、$yy が 3 であれば
if (($xx == 2) or ($yy == 3))  # $xx が 2、もしくは、$yy が 3 であれば
if (not ($xx == 2))            # $xx が 2 でなければ

&&論理積AND)、||論理和OR)、!否定NOT)を意味します。

◆ ビット演算子
$xx | $yy           # $xx と $yy の論理和(OR)
$xx & $yy           # $xx と $yy の論理積(AND)
$xx ^ $yy           # $xx と $yy の排他的論理輪(XOR)
$xx |= $yy;         # $xx = $xx | $yy と同じ
$xx &= $yy          # $xx = $xx & $yy と同じ
$xx ^= $yy          # $xx = $xx ^ $yy と同じ
~$xx                # $xx のビットをすべて反転させたもの
$xx << 2            # $xx を2ビット左シフト
$xx >> 2            # $xx を2ビット右シフト(上位には符号ビットを埋める)
◆ ファイルテスト演算子
if (-r $file)     # 読み込み可能であれば
if (-w $file)     # 書き込み可能であれば
if (-x $file)     # 実行可能であれば
if (-o $file)     # 自分のものであれば

if (-R $file)     # 実uid/gidで読み込み可能であれば(UNIX)
if (-W $file)     # 実uid/gidで書き込み可能であれば(UNIX)
if (-X $file)     # 実uid/gidで実行可能であれば(UNIX)
if (-O $file)     # 実uidのものであれば(UNIX)

if (-e $file)     # 存在すれば
if (-z $file)     # サイズが0であれば
if (-s $file)     # サイズが0でなければ(ファイルサイズを返す)

if (-f $file)     # 通常ファイルであれば
if (-d $file)     # ディレクトリであれば
if (-l $file)     # シンボリックリンクであれば(UNIX)
if (-p $file)     # 名前付きパイプであれば(UNIX)
if (-S $file)     # ソケットであれば(UNIX)
if (-b $file)     # ブロック型スペシャルファイルであれば(UNIX)
if (-c $file)     # キャラクタ型スペシャルファイルであれば(UNIX)
if (-t $file)     # tty としてオープンされていれば(UNIX)

if (-u $file)     # setuidビットが立っていれば(UNIX)
if (-g $file)     # setgifビットが立っていれば(UNIX)
if (-k $file)     # stickyビットが立っていれば(UNIX)

if (-T $file)     # ファイルがテキストファイルであれば
if (-B $file)     # ファイルがバイナリファイルであれば

if (-M $file)     # ファイルの更新時刻がこのプログラム起動時より古ければ
if (-A $file)     # ファイルの参照時刻がこのプログラム起動時より古ければ
if (-C $file)     # ファイルの作成時刻がこのプログラム起動時より古ければ

Copyright (C) 2002 杜甫々