独習Perl 第2版 第3章,4章
ひさびさのPerl
独習Perl
- 前回で飽きそう・・・ってことでしたが、練習問題なんかはまだやりがいが多く、発見もある。
- とりあえず、一冊終える事を目標に、例題メインで進める事に。
独習Perl 第2版 第3章 制御構文
- for文とwhile文
- forステートメントの初期値,条件式,インクリメント式は同一の変数でなくてもokってのは新鮮だった。
- ラベルや
next
,redo
,last
ってのがいまいち使う場面が想定できない。
独習Perl 第2版 第4章 配列
- for,foreachで配列を扱うループまわした時、配列そのものにも影響していた事を知り驚く。
my @numbers = (0..3); foreach my $value (@numbers){ $value *= 2; } print "@numbers\n";
@numbers
に格納された0,1,2,3という数は、foreachまわすと0,2,4,6になる。- 最初は、@numbersから数を取り出したら、@numbersが空配列になるのでは?とか思ってた
- popみたいに思ってたってことか
- むしろ、配列の個々の要素にアクセスできるってことは、mapみたいに使えるってことか
- 最初は、@numbersから数を取り出したら、@numbersが空配列になるのでは?とか思ってた
配列など既に通り過ぎた地、余裕とか思ってたが、こうやって理解の浅さを知る
ハッシュが配列の一種としてまとめて解説されている。
- 今までの本だと、変数で一つ、配列で一つ、ハッシュで一つ、みたいな解説の方法が多かったなぁ。
- 100までの数で、2,3,5で割り切れる数をカウントする。
- このハッシュを使って配列の中の特定要素(今回は特定の数で割り切れる)をカウントする方法って、最初に知ったときはホント目から鱗だったなあ。
my %num; foreach ( 1 .. 100 ) { $num{2}++ if ( $_ % 2 == 0 ); $num{3}++ if ( $_ % 3 == 0 ); $num{5}++ if ( $_ % 5 == 0 ); } foreach ( 2, 3, 5 ) { print $num{$_}, "\n"; }
- ハッシュ扱うときの、eachっての初めて使った。なるほど、keyとvalueのペアで抜き出す事も出来るんか
my $value; my $key; while (($key ,$value) = each %array){ print $key ," ",$value ,"\n"; }