すぐわかるPerlでPerlを学ぶ(その3)
![すぐわかるPerl (Software Technology) すぐわかるPerl (Software Technology)](https://images-fe.ssl-images-amazon.com/images/I/41LnrObXh5L._SL160_.jpg)
すぐわかるPerl (Software Technology)
- 作者: 深沢千尋
- 出版社/メーカー: 技術評論社
- 発売日: 1999/07/01
- メディア: 単行本
- 購入: 11人 クリック: 300回
- この商品を含むブログ (44件) を見る
第四章
リストと配列
-
- リストとは?
複数の値を持ったデータをリストと呼びます。そのままですね。値は()に入れて扱います。
-
- 配列とは?
リストと同様に複数の値を持ったデータの集合です。リストと異なるのは配列の各要素に対して自由にアクセスできることです。アクセスには添え字と呼ばれる数値や文字列を使用します。perlは連想配列なので文字列が使えて便利です。
配列の個々の要素にアクセスする時は$xxxx[添え字]でアクセスします。配列にアクセスする時は@xxxxでアクセスします。
リストと配列を使ったサンプルを作ってみました。
#!/usr/bin/perl @myfamily = ("itotto", "marimari", "haho", "ao"); print("------------------------------------------\n"); for ( $i = 0; $i <= 3; $i++ ) { print($i."\t$myfamily[$i]\n"); } ($father, $mother, $daughter1, $daughter2) = @myfamily; print("\n------------------------------------------\n"); print("father is $father\n"); print("mother is $mother\n"); print("eldest daughter is $daughter1\n"); print("second daughter is $daughter2\n"); print("\n------------------------------------------\n");
これを動かしてみます。
itotto@www >./arraytest.pl ------------------------------------------ 0 itotto 1 marimari 2 haho 3 ao ------------------------------------------ father is itotto mother is marimari eldest daughter is haho second daughter is ao ------------------------------------------ itotto@www >
ちゃんと代入も出来ています。
2つのコンテキスト
- リストコンテキスト
- @xxxxという記述は以下のときに配列全体をあらわします。これをリストコンテキストと呼びます。
-
- リストに代入するとき
- リストを代入するとき
- 配列同士を代入するとき
-
- スカラー変数に代入するとき
- 数値と比較するとき
- 数式の一部として使用されるとき
サンプルは面倒なので割愛。ここらへんはフィーリングでいけます。
配列あれこれ
-
- 配列要素の交換
Perlは配列の要素を交換するのもチョー簡単。
@hoge = ("element_2","element1"); # 要素の順番を間違って定義 ($hoge[0],$hoge[1]) = ($hoge[1],$hoge[0]); # 交換は一発で可能!!
-
- 配列でさまざまな要素にアクセスする
配列へのアクセス方法にはいろいろと面白い方法があります。
@testarray = ("element1","element2","element3","element4","element5","element6"); # 配列の最後の要素にアクセス # $#配列名 で最後の要素番号を返します print("$testarray[$#testarray]\n"); # 配列の最後の方から要素にアクセス # 負数でアクセスすると後ろからアクセスします print("最後の要素 = $testarray[-1]\n"); print("最後からの2番目の要素 = $testarray[-2]\n"); # 配列の一部からリストを作成 # 2,4,6番目の要素を表示 print("@testarray[1,3,5]\n"); # 3番目から5番目の要素を表示 print("@testarray[2..4]\n"); # 100..105は100から105まで1ずつ増えていく数値のリストと同値 print(100..105); print("\n");
実行するとこんな感じ。
itotto@www >./samplearray.pl element6 最後の要素 = element6 最後からの2番目の要素 = element5 element2 element4 element6 element3 element4 element5 100101102103104105 itotto@www >
-
- 配列にアクセスする便利なforeach
すべての配列要素にアクセスするときにはforeachがチョー便利。
まずはお小遣いを計算するサンプルはこちら。
#!/usr/bin/perl # 月々のお小遣い @money = (31000,28000,31000,30000,31000,40000,31000,31000,30000,31000,30000,41000); $sum = 0; foreach $eachmoney (@money) { $sum += $eachmoney; } $avg = $sum/@money; print("お小遣いは1年で$sum円もらっていて月平均は$avg円です\n");
実際に実行するとこんな感じです。
itotto@www >./testforeach.pl お小遣いは1年で385000円もらっていて月平均は32083.3333333333円です itotto@www >
ちなみに私はこんなにもらっていません。
こんな感じでリストと配列は完了。簡単だし使いやすいし非常に魅力的な機能満載です。