Yamamoto's Laboratory
 
制御文
 
 
 
 

比較演算子

算術比較

2つの数値を比較する場合の演算子は,以下の表の通りです.

数値の比較.
比較内容 演算子 戻り値
等しい == 左辺の値と右辺の値が等しい場合に真.
等しくない != 左辺の値と右辺の値が等しい場合に真.
小さい < 左辺の値が右辺の値に比べて小さい場合に真.
大きい > 左辺の値が右辺の値に比べて大きい場合に真.
以下 <= 左辺の値が右辺の値以下の場合に真.
以上 >= 左辺の値が右辺の値以上の場合に真.
比較 <=> -1:左辺 < 右辺   0:左辺 = 右辺   1:左辺 > 右辺

文字列比較

2つの文字列を比較する場合の演算子は,以下の表の通りです.

文字列の比較.
比較内容 演算子 戻り値
等しい eq 左辺の値と右辺の値が等しい場合に真.
等しくない ne 左辺の値と右辺の値が等しい場合に真.
小さい lt 左辺の値が右辺の値に比べて小さい場合に真.
大きい gt 左辺の値が右辺の値に比べて大きい場合に真.
以下 le 左辺の値が右辺の値以下の場合に真.
以上 ge 左辺の値が右辺の値以上の場合に真.
比較 cmp -1:左辺 < 右辺   0:左辺 = 右辺   1:左辺 > 右辺

分岐

繰り返し

繰り返し構文

for

flow chart of for
フローチャートで表した for 構文

予め繰り返し回数が分かっている場合に,for を使います.これは,C言語の for と同じで,以下のような構文です.

for( 初期値設定式;  継続条件式;  再設定式 ){

    # 繰り返しブロック

}

while

通常は,ループ処理の繰り返し回数が決まっていないときに使います.ループ開始前に,繰り返し処理の実行の判断を行います.これは,C言語の while と同じで,以下のような構文です.

until

foreach

do — while

これもまた,ループ処理の繰り返し回数が決まっていないときに使います.ループ開始後に,次の繰り返し処理の実行の判断を行います.これは,C言語の do — while と同じで,以下のような構文です.

do — until

繰り返しの制御

繰り返し文の中で,それを制御するために以下のコマンドを使うことができます.

繰り返し文中で使う制御コマンド
next これ以降のループ内の全てのコマンドをスキップして,ループの最後(ループの閉じ括弧 })の前に制御を移動する.もし,continue ブロックがあると,それは実行されます.
last 繰り返しのブロックから脱出します.continue ブロックがあっても,実行されません.
redo 繰り返しのブロックの先頭に制御を移します.continue ブロックも,繰り返しの判断処理も実行されません.
goto 直ちに,指定したラベルに制御を移します.

プログラムの開始/終了時の実行ルーチン

BEGIN

BEGINルーチンは,プログラムの実行開始時に,真っ先に実行されます.コンストラクターに似ています.

BEGIN{

    # プログラム開始時の実行ブロック

}

END

ENDルーチンは,プログラムの終了/停止時に,最後に実行されます.デストラクターに似ています.exit や die でプログラムを停止しても,このルーチンは実行されます.

END{

    # プログラム終了/停止時の実行ブロック

}

プログラムの停止

exit

exitは,引数であるステータスコードをOSに返して,プログラムを終了させます.この場合でも,END サブルーチンがあれば,それは実行されます.

exit 255;

ステータスコードの指定がなければ,0をOSに返すことになります.

シェルがbashの場合,$? にステータスコードが格納されます.

die

dieは,引数である文字列を標準エラー出力(STDERR:通常はディスプレイ)に表示した後,プログラムを終了させます.この場合でも,END サブルーチンがあれば,それは実行されます.

die "Error occered !!\n";

プログラム例

  • foreach  配列のデータを順次呼び出し繰り返し処理する場合,便利な文です.
    foreach $var(@array){
      # ここに処理の内容を書く.
      # @arrayの個々の内容が,$varに格納される.
    }
    もし,$varを省略すると,$_に@arrayの内容は,格納されます.

ページ作成情報

参考資料

  1. SmartのWEB講座perl講座は,大変わかりやすく説明しています.その中の「制御構文」を参考にしました.

更新履歴

2005年頃 ページの新規作成


no counter