【Perl5】各種演算子

2015年10月7日

代入

$i = 5;

算術演算子

$i = 5 + 2;        # 足し算
$i = 5 - 2;        # 引き算
$i = 5 * 2;        # 掛け算
$i = 5 / 2;        # 割り算
$i = 5 % 2;        # 5 を 2で割った余り(=1)
$i = 5 ** 2;       # 5 の 2乗(=25)
$i++;              # $xxの値が 1 加算されます
$i--;              # $xxの値が 1 減算されます
$i **= 2;          # $xx = $xx ** 2; と同様

ビット演算子

$xx | $yy           # $xx と $yy の OR
$xx & $yy           # $xx と $yy の AND
~$xx                # $xx のビットをすべて反転させたもの
$xx << 2            # $xx を 2 ビット左シフト
$xx >> 2            # $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==2) && ($yy==3))  # $xxが2、かつ、$yyが3であれば
if (($xx==2) || ($yy==3))  # $xxが2、もしくは、$yyが3であれば
if ($xx <=> $yy)           # 比較結果を -1, 0, 1 のいずれかで返す

文字列比較演算子

if ($xx eq $yy)            # $xx と $yy が等しければ
if ($xx ne $yy)            # $xx と $yy が異なっていれば
if ($xx lt $yy)            # $xx が $yy より小さければ
if ($xx gt $yy)            # $xx が $yy より大きければ
if ($xx le $yy)            # $xx が $yy より等しいか小さければ
if ($xx ge $yy)            # $xx が $yy より等しいか大きければ
if ($xx =~ /ABC/)          # $xx が ABC という文字を含んでいれば
if ($xx !~ /ABC/)          # $xx が ABC という文字を含んでいなければ
if ($xx cmp $yy)           # 比較し、-1, 0, 1 のいずれかで返す

条件演算子(三項演算子)

a ? b : c # a が真であれば b さもなくば c

文字列連結演算子

文字列を連結します。

$xx = $yy . $zz;    # 文字列 $yy と 文字列 $zz を連結します
$xx .= $yy;         # $xx = $xx . $yy と同様です。

繰り返し演算子

print '-' x 10;     # '-'を 10 個表示します。
$xx x= 10;          # $xx を 10 回繰り返したものを $xx に代入します。
@ones = (1) x 10;   # 10個の(1, 1, 1, 1, ......, 1)と同様です。

範囲演算子

@xx = (0 .. 5);     # @xx = (0, 1, 2, 3, 4, 5);と同様。
for (0 .. 5)        # for ($_ = 0; $_ <= 5; $_++) と同様

ファイル検査

ファイルが読み書き可能かどうか等を検査することができます。

# ファイル名で指定する

if (-w "file.txt") { print "書き込み可能Write\n"; }

# ファイルハンドルで指定する

open(IN, "file.txt");
if (-r IN) { print "読み込み可能\n"; }
close(IN);

# アンダーライン( _ )は最後に検査されたファイルを示す

if (-r "file.txt") { print "読み込み可能\n"; }
if (-w _) { print "書き込み可能\n"; }

# stat()を用いた例

stat("file.txt");
if (-r _) { print "読み込み可能\n"; }

次のような検査が可能です。

-r      # 読み込み可能であれば
-w      # 書き込み可能であれば
-x      # 実行可能であれば
-o      # 自分のものであれば
-R      # 実uid/gidで読み込み可能であれば
-W      # 実uid/gidで書き込み可能であれば
-X      # 実uid/gidで実行可能であれば
-O      # 実uidのものであれば
-e      # 存在すれば
-z      # サイズが0であれば
-s      # サイズが0でなければ(ファイルサイズを返す)
-f      # 通常ファイルであれば
-d      # ディレクトリであれば
-l      # シンボリックリンクであれば
-p      # 名前付きパイプであれば
-S      # ソケットであれば
-b      # ブロック型スペシャルファイルであれば
-c      # キャラクタ型スペシャルファイルであれば
-u      # setuidビットが立っていれば
-g      # setgifビットが立っていれば
-k      # stickyビットが立っていれば
-t      # ファイルハンドルが tty としてオープンされていれば
-T      # ファイルがテキストファイルであれば
-B      # ファイルがバイナリファイルであれば
-M      # perl起動時における、ファイルの更新時刻からの日数
-A      # perl起動時における、ファイルの参照時刻からの日数
-C      # perl起動時における、ファイルの作成時刻からの日数

Perl5入門

Posted by 管理人