「すぐわかるPerl」4.8 配列を連続アクセスする「foreach」ループ
foreachはwhileやforと同じで、繰り返しを行う制御文
ちょっと復習
while(76p)
while(繰り返し条件){
命令1;
命令2;
}
for(87p)
for(最初に実行する文;ループを継続するか判定する文;ブロックの最後にやる文){
命令1
命令2;
}
平均身長プログラムでforeachを使ってみる
#! c:\perl\bin\perl.exe
# average - 平均身長を求める
@tall=(155.5,160,162.4,173,173.8,180.5,178.2,145.9,155.5,162.8);
foreach $each_tall (@tall){
$sum += $each_tall;
}
$ave = $sum / @tall;
print "average;$ave\n";
この中のforeachに注目
foreach $each_tall (@tall){{
$sum += $each_tall;
}
これは$sumに配列の数(155.5とか160とか)を一個ずつ入れていくための部分。
foreach $each_tall (@tall){
まず、0番目の要素を処理する
$tall[0]=$each_tall
その$each_tallを$sumに加算する。
$sum += $each_tall;
foreachはループなので、今度は1番目の要素を処理
$tall[1]=$each_tall
foreachはこれを要素の数だけ行う。
・・・ってことでいいのだろうか、オレ解釈だが。
で、foreachループを抜けた後に$sum(配列の数の合計が入っている)を@tall(配列の数、つまり10個)で割る。
(@tallは数式の中で扱われる場合にはリストではなくスカラーコンテキストとして扱われる 101p)
| 固定リンク
「Perl」カテゴリの記事
- 「すぐわかるPerl」 8.10 ディレクトリのリカーシブ処理(その2)(2009.02.24)
- 「すぐわかるPerl」 8.10 ディレクトリのリカーシブ処理(その1)(2009.02.23)
- 「すぐわかるPerl」 7.6 マッチした文字列と、その前後の文字列を扱う変数(2008.06.17)
- 「すぐわかるPerl」 8.9 コマンドの入出力に入出力を切り替える(2008.11.12)
- 「すぐわかるPerl」 8.8 標準入出力以外のファイルの制御(2008.10.08)









コメント