P.58
# jackpot.pl
# ジャックポットゲーム
  
# 初期設定及びルールの表示
  $pt= 50 ;
  print "\n 持ち点 $pt 点。賭け点の上限は100点です。" ;
  %mark = (1 => "@", 2 => "☆", 3 => "★" ) ;
  
# ゲーム開始
  while(1)
{
  # 賭け点の入力
    print "\n\n 1.全部同じ(x8)  2.バラバラ(x4) \n\n 何番−何点:" ;
    $bet = <STDIN> ;
    chomp $bet ;
    ($num, $wag) = split /-/, $bet ;
  
  # 賭け点に対するエラーメッセージ
    if ($wag < 1) {print "\n 1点以上賭けてください!" ; redo}
    elsif ($wag > 100) {print "\n 賭け点の上限は100点です!" ; redo}
    elsif ($wag > $pt) {print "\n 賭け点が足りません!" ; redo}
  
  # 賭け点の徴収
    $pt -= $wag ;
    print "\n $num 番に $wag 点賭けます。\n" ;
  
  # スロットの目を決める
    $a1 = 1 + int rand 3 ;
    $a2 = 1 + int rand 3 ;
    $a3 = 1 + int rand 3 ;
  
# 確定した目の表示
    print "\n $mark{$a1} $mark{$a2} $mark{$a3}" ;  
  
# 1番に賭けていた場合の配当
    if($num == 1)
      {
       if ($a1 == $a2 and $a2 == $a3)
          {$pt += 8*$wag ; print "\n\n 当たりました!\n"}
       else {print "\n\n はずれ!\n"}
      }
  
  # 2番に賭けていた場合の配当
    elsif($num == 2)
      {
       if ($a1 * $a2 * $a3 == 6)
          {$pt += 4*$wag ; print "\n\n 当たりました!\n"}
       else {print "\n\n はずれ!\n"}
      }
  
  # 1、2以外の番号が入力された場合
    else {print "\n\n 無効な番号です!\n"; $wag = 0; last}
  
# 現在の結果表示
    if ($pt <= 0) {print "\n ** ゲームオーバー ** \n" ; exit}
    print "\n 現在 $pt 点。次の賭け点を決めてください。"
}


P.66
# big_or_small.pl
# ビッグ・オア・スモールゲーム
  
# 初期設定及びルールの表示
  $pt= 50 ;
  print "\n 持ち点 $pt 点。賭け点の上限は100点です。" ;
  %card = (1 => "J", 2 => "Q", 3 => "K", 4 => "A" ) ;
  
# ゲーム開始
  while(1)
{
  @deal = qw (□ □ □ □ □) ;
  print "\n\n @deal \n" ;
  
  # 賭け点の入力
    print "\n 賭け点:" ;
    $wag = <STDIN> ;
    chomp $wag ;
  
  # 賭け点に対するエラーメッセージ
    if ($wag < 1) {print "\n 1点以上賭けてください!" ; redo}
    elsif ($wag > 100) {print "\n 賭け点の上限は100点です!" ; redo}
    elsif ($wag > $pt) {print "\n 賭け点が足りません!" ; redo}
  
  # 賭け点の徴収
    $pt -= $wag ;
  
  # 5枚のカードを決める
    for (1..5)
       {
        push @drew, (1 + int rand 4)
       }
  
  # 1枚目の絵柄を入れる
    $deal[0] = $card{$drew[0]} ;
  
  # Big or Small 開始
    $i = 1 ;
    while (1)
   {
  # 絵柄を見せる
    print "\n @deal" ;  
  
  # 「小・等・大」の選択
    print "\n\n 1.スモール  2.イコール  3.ビッグ \n\n 何番:" ;
    $num = <STDIN> ;
    chomp $num ;
  
  # 選択したカードを見せる
    $deal[$i] = $card{$drew[$i]} ;
    print "\n @deal" ;  
  
  # 1番に賭けた場合の配当
    if($num == 1)
      {
       if ($drew[$i] < $drew[$i-1])
          {$wag *= 2 ; print "\n\n 当たりました!\n"; ++$i}
       else {print "\n\n はずれ!\n"; $wag = 0; last}
      }
  
  # 2番に賭けた場合の配当
    elsif($num == 2)
      {
       if ($drew[$i] == $drew[$i-1])
          {$wag *= 2 ; print "\n\n 当たりました!\n"; ++$i}
       else {print "\n\n はずれ!\n"; $wag = 0; last}
      }
  
  # 3番に賭けた場合の配当
    elsif($num == 3)
      {
       if ($drew[$i] > $drew[$i-1])
          {$wag *= 2 ; print "\n\n 当たりました!\n"; ++$i}
       else {print "\n\n はずれ!\n"; $wag = 0; last}
      }
  
# 1〜3以外の番号が入力された場合
    else {print "\n\n 無効な番号です!\n"; $wag = 0; last}
  
  # 全部当たった場合の表示
    if ($i > 4)
      {print "\n Congratulation !! \n"; last}
  
  # まだ残りのカードがある場合の表示
    print "\n $wag 点獲得! 続けますか?\n\n 1.はい 他.いいえ:" ;
    $bet = <STDIN> ;
    chomp $bet ;
    unless ($bet == 1){last}
   }
  
# 現在の結果表示
    $pt += $wag ;
    if ($pt <= 0) {print "\n ** ゲームオーバー ** \n" ; exit}
    print "\n 現在 $pt 点。次の賭け点を決めてください。" ;
    undef @drew
}