第3章のサンプルコード
---------------------
目次（ページ番号）
■P46
■P47-1
■P47-2
■P50
■P51-1
■P51-2
■P53
■P54
■P55-1
■P55-2
■P59
■P60
■P62
■P63
---------------------

■P46
# switchステートメントのエミュレート
#  switch.pl

print "数値を入力: ";
$number = <STDIN>;
chomp($number);

if ($number == 0) {
  print "零";
} elsif ($number == 1) {
  print "一";
} elsif ($number == 2) {
  print "二";
} elsif ($number == 3) {
  print "三";
} elsif ($number == 4) {
  print "四";
} else {
  print "4以下の数を入力してください。";
}
print "\n";

■P47-1
# 簡単なクイズスクリプト
#  quiz.pl

print "2 + 3 はいくつになりますか: ";

# ユーザーの入力を待つ
$answer = <STDIN>;

# 改行文字を除く
chomp($answer);

# 処理を分岐
if ($answer == 5) {
  # ==は「等しい」を意味する
  # 5に等しいとき
  print "あたりです!\n";
} else {
  # 5に等しくなかったとき
  print "ざんねん、はずれです。\n";
}

■P47-2
# 簡単なクイズスクリプト
#  quiz_unless.pl

print "2 + 3 はいくつになりますか: ";

# ユーザーの入力を待つ
$answer = <STDIN>;

# 改行文字を除く
chomp($answer);

# 処理を分岐
unless ($answer != 5) {
  # !=は「等しくない」を意味する
  # 「5に等しくない」が偽のとき、つまり「5に等しい」とき
  print "あたりです!\n";
} else {
  # 「5に等しくない」が真のとき
  print "ざんねん、はずれです。\n";
}

■P50
# カウントダウン
#  countdown.pl

print "初期値を入力してください: ";
$number = <STDIN>;
chomp($number);

# $numberの値が0以上の間繰り返す
while ($number >= 0) {
  print "数値: $number\n";
  # numberをデクリメント
  $number--;
}

■P51-1
# カウントダウン
#  countdown_until.pl

print "初期値を入力してください: ";
$number = <STDIN>;
chomp($number);

# $numberの値が0より小さくなるまで繰り返す
until ($number < 0) {
  print "数値: $number\n";
  # numberをデクリメント
  $number--;
}

■P51-2
# カウントダウン
#  countdown_while.pl

print "初期値を入力してください: ";
$number = <STDIN>;
chomp($number);

# 必ず一度は実行する
do {
  print "数値: $number\n";
  # numberをデクリメント
  $number--;
  # $numberの値が0以上の間繰り返す
} while ($number >= 0);

■P53
# 指定した数までカウントアップ
#  for.pl

print "数値を入力してください: ";
$max = <STDIN>;
chomp($max);

# 1〜$maxまで繰り返す
for ($number = 1; $number <= $max; $number++) {
  print "数値: $number\n";
}

■P54
# 指定した数まで表示
#  while_for.pl

print "数値を入力してください: ";
$max = <STDIN>;
chomp($max);

$number = 1;

# $maxまで繰り返す
while ($number <= $max) {
  print "数値: $number\n";
  $number++;
}

■P55-1
# 指定した数までを表示、4のときは飛ばす
#  for_skip.pl

print "数値を入力してください: ";
$max = <STDIN>;
chomp($max);

for ($number = 1; $number <= $max; $number++) {
  if ($number == 4) {
    # $numberが4のときは1つインクリメント
    $number = 5;
  }
  print "数値: $number\n";
}

■P55-2
# 3つの個別の変数をforステートメントに使用
#  triple.pl

$number2 = 0;
$number3 = 1;

for ($number1 = 1; $number2 <= 50; $number3 += 3) {
  $number2 += $number1 * $number3;
  print "数1: $number1\t数2: $number2\t数3: $number3\n";
  $number1++;
}

■P59
# next、redo、last、exitのテスト
#  next_redo_last.pl

# 1は真を意味するので、永久に繰り返す
while (1) {
  # whileによるループ
  print "whileループ\n";
    # forによるループ
  for ($i = 0; $i < 100; $i++) {
    print "forループカウント: $i\n";

    # 番号入力
    print "1. next  2. redo  3. last  4. exit :";
    $type =<STDIN>;
    chomp($type);

    if ($type == 1) {
      # 1のときはnext
      next;
    } elsif ($type == 2) {
      # 2のときはredo
      redo;
    } elsif ($type == 3) {
      # 3のときはlast
      last;
    } elsif ($type == 4) {
      # 4のときはexit
      exit(0);
    }
  }
}

■P60
# 多重ループから抜ける
#  label.pl

# LOOP1を定義
LOOP1: while (1) {
  print "LOOP1開始\n";

  # LOOP2を定義
  LOOP2: while (1) {
    print "LOOP2開始\n";

    # LOOP3を定義
    LOOP3: while (1) {
      print "LOOP3開始\n";
      print "移動するループ番号を入力してください: ";
      $number = <STDIN>;
      chomp($number);
      if ($number == 1) {
        # LOOP1の先頭へ
        next LOOP1;
      } elsif ($number == 2) {
        # LOOP2の先頭へ
        next LOOP2;
      } elsif ($number == 3) {
        # LOOP3の先頭へ
        next LOOP3;
      } else {
        # LOOP1の外へ
        last LOOP1;
      }
    }
  }
}

■P62
# ?演算子を使ったクイズスクリプト
#  quiz_shortif.pl

print "2 + 3 はいくつになりますか: ";

# ユーザーの入力を待つ
$answer = <STDIN>;

# 改行文字を除く
chomp($answer);

# ?演算子で判別
print (($answer == 5) ? "あたりです!\n" : 
  "ざんねん、はずれです。\n");

■P63
# ステートメント修飾子のテスト
#  statement.pl

print "数値を入力してください: ";
$number = <STDIN>;
chomp($number);

# 5より大きければステートメントを実行
print "5よりも大きい\n" if ($number > 5);

# 0以外ならステートメントを実行
print "0ではない\n" unless ($number == 0);

# 10より小さい間ステートメントを実行
print ("インクリメント", $number++, "\n") while 
  ($number < 10);

# 5より小さくなるまでステートメントを実行
print ("デクリメント", $number--, "\n") until 
  ($number < 5);
