画面をドラッグ&コピーしてお使い下さい。
(半角スペースはレイアウト上のもので、プログラム上は無視されます。)

P.6
# sum_01a.pl
# for を用いたループ計算(1)

# データの個数
  $num = 6 ;

# データの定義
  @ax = (55, 32, 47, 91, 60, 28) ;

# 合計の計算
  for (1..$num)
     {
      $sum += $ax[$k] ;
      ++$k ;
     }

# 平均の計算
  $ave = $sum/$num ;

# 結果の表示
  print "\n 合計 = $sum \n 平均 = $ave \n" ;
  
P.11
# sum_01b.pl
# for を用いたループ計算(2)

# データの定義
  @ax = (55, 32, 47, 91, 60, 28) ;

# データの個数
  $num = @ax ;

# 合計の計算
  for $k (0..$num-1)
     {
      $sum += $ax[$k]
     }

# 平均の計算
  $ave = $sum/$num ;

# 結果の表示
  print "\n 合計 = $sum
平均 = $ave \n"

  
P.14
# sum_01c.pl
# for を用いたループ計算(3)

# データの定義
  @ax = qw (55 32 47 91 60 28) ;

# 合計の計算
  foreach (@ax) {$sum += $_}

# 平均の計算
  $ave = $sum/@ax ;

# 結果の表示
  print "\n 合計 = $sum
平均 = $ave \n"

  
P.17
# sum_02a.pl
# while を用いたループ計算(1)

# データの定義
  @ax = qw (55 32 47 91 60 28) ;

# データの個数(カウンタ用)
  $num = @ax ;

# 合計の計算
  while ($num--) {$sum += $ax[$num]}
    
# 平均の計算
  $ave = $sum/@ax ;

# 結果の表示
  printf "\n 合計 = %d \n 平均 = %.1f \n", $sum, $ave  
  
P.19
# sum_02b.pl
# while を用いたループ計算(2)

# データの定義
  @ax = qw (55 32 47 91 60 28) ;

# 合計の計算
  while ($k < @ax)
       {$sum += $ax[$k] ; ++$k}

# 平均の計算
  $ave = $sum/@ax ;
  $ave2 = sprintf "%.1f", $ave ;

# 結果の表示
  print "\n 合計 = $sum
平均 = $ave2 \n"    

  
P.23
# sum_03a.pl
# 画面からの入力(1)

# データの個数の入力
  print "\n 個数:" ;
  $num = <STDIN> ;
  chomp $num ;
  print "\n" ;

# 合計の計算
  for $k (1..$num)
     {
      print " ($k/$num):" ;
      $ax = <STDIN>;
      chomp $ax ;
      $sum += $ax
     }            

# 平均の計算
  $ave = $sum/$num ;
  $ave2 = sprintf "%.1f", $ave ;

# 結果の表示
  print "\n 合計 = $sum
平均 = $ave2 \n"      

  
P.26
# sum_03b.pl
# 画面からの入力(2)

# データの入力と合計の計算
  while ($ax ne "\n")
    {
     ++$num ;
     print "\n $num:" ;
     $ax = <STDIN>;
     $sum += $ax
    }  

# 平均の計算
   --$num ;
   $ave = $sum/$num ;                      
   $ave2 = sprintf "%.1f", $ave ;        
                                            
# 結果の表示                               
   print "\n ($num 個 / 合計 $sum / 平均 $ave2) \n"

  
P.29
# sum_03c.pl
# 画面からの入力(3)

while (1)
  {
# データの入力
   ++$num ;
   print "\n $num:" ;
   $ax = <STDIN>;

# 終了判断
   if ($ax eq "\n") {last}
   chomp $ax ;

# 合計の計算
   $sum += $ax ;

# 平均の計算
   $ave = $sum/$num ;
   $ave2 = sprintf "%.1f", $ave ;

# 結果の表示
   print "\n (合計 $sum / 平均 $ave2) \n"
  }

# 終了のメッセージ
   print "\n 計算終了 \n"
  
P.34
# sum_04a.pl
# 外部ファイルの利用(1)

# データの読み込み
  print "\n ファイル名:" ;
  $name = <STDIN> ;
  chomp $name ;
  open R, "$name" ;
  for (<R>) {push @ax, split}
    
# 合計の計算
  foreach (@ax) {$sum += $_}

# 平均の計算
  $num = @ax ;
  $ave = $sum/$num ;
  $ave2 = sprintf "%.1f", $ave ;

# 結果の表示
  print "\n (個数 $num / 合計 $sum / 平均 $ave2) \n" ;

# 結果の追加書き込み
  open A, ">>$name" ;
  print A "\n個数 $num \n合計 $sum \n平均 $ave2 \n"

  
P.39
# sum_04b.pl
# 外部ファイルの利用(2)

# データの読み込み
  print "\n ファイル名:" ;
  $name = <STDIN> ;
  chomp $name ;
  open (R, "$name.txt") ;
  for (<R>)
     {
      push @ax, split if /^\d/ ;
      @ax = grep /\d/, @ax
     }

# 合計の計算
  for (@ax) {$sum += $_}
    
# 平均の計算
  $num = @ax ;
  $ave = $sum/$num ;
  $ave2 = sprintf "%.1f", $ave ;

# 結果の表示
  print "\n (個数 $num / 合計 $sum / 平均 $ave2) \n" ;

# 結果を別ファイルで保存
  open (R, "$name.txt") ;
  @bx = <R> ;
  open (W,">$name-2.txt") ;
  print W @bx ;
  print W "\n個数 $num \n合計 $sum \n平均 $ave2 \n" ;
  print "\n「$name-2.txt」で保存しました。\n"