ブログ、10月から更新が止まってる…。
11月、12月忙しかったからなぁ…。
今回のテーマは「配列」
(だったみたい。12月にatnd登録したっきりで、忘れていた…。
で、LTの人数が足りないということで、飛び入り参加。
何にしようかと思案して、配列を引数として使うところに絞って説明してみた。
#!/usr/bin/perl use strict; use warnings; #1つ渡す my @name = ("shinji"); &say_name(@name); #まぁ普通 sub say_name { my ($name) = @_; print "he is ".$name."\n"; } #2つ渡す my @names = ("shinji","aska") &say_names(@names); #なんか似た行が並んだ。 sub say_names { my ($name1,$name2) = @_; print "he is ".$name1."\n"; print "she is ".$name2."\n"; } #3つ渡す my @names2 = ("shinji","aska","rei") &say_names2(@names2); #似た行が3行もあるよ…。 sub say_names2 { my ($name1,$name2,$name3) = @_; print "he is ".$name1."\n"; print "she is ".$name2."\n"; print "she is ".$name3."\n"; } #4つ渡す my @names3 = ("shinji","aska","rei","kaoru"); &say_names3(@names3); #むむ…4行もある…さすがにこれは…。 sub say_names3 { my ($name1,$name2,$name3,$name4) = @_; print "he is ".$name1."\n"; print "she is ".$name2."\n"; print "she is ".$name3."\n"; print "he is ".$name4."\n"; } #ということで… #4つ渡す ver2 my @names3_1= ("shinji","aska","rei","kaoru"); &say_names3_1(@names3_1); #ひとまず、foreachを使って改修してみた。 #なんか$nameシリーズ多いですね…。 sub say_names3_1 { my ($name1,$name2,$name3,$name4) = @_; foreach my $name ($name1,$name2,$name3,$name4) { print "(s)he is ". $name."\n"; } } #5つ渡す…。 my @names4 = ("shinji","aska","rei","kaoru","misato"); &say_names4(@names4); #ぎゃー!!! #$nameどうにかならんのー!! sub say_names4 { my ($name1,$name2,$name3,$name4,$name5) = @_; foreach my $name ($name1,$name2,$name3,$name4,$name5) { print "(s)he is ". $name."\n" } } #そこで今回覚えて行ってほしいのが配列の参照渡し(リファレンス) #配列の印、アットマーク(@)の前にバックスラッシュ(\)(Windowsでは円マーク) my @name_ref = ("shinji","aska","rei","kaoru","misato"); &say_name_ref(\@name_ref); #バックスラッシュ! #バックスラッシュを使って引数とすると「"メモリの位置"を1つ渡す」という処理になります。 #それから、使うときは、メモリの位置はそのまま使えませんのでドルマーク($)の前に配列の印@をおいてあげてください。 sub say_name_ref { my ($names) = @_; # メモリの位置を1つ引き受けます foreach my $name (@$names) { # $の前に@を置く print "(s)he is ". $name."\n" } } 1;
配列の参照渡しはこんな風に使えますよ。
というお話でした。
で、時間も合ったので「おすすめモジュール」の話ということで、
『Data::Section::Simple』の話をしだしたんだけれど。
牧さんから「配列に関係ないじゃん。」
そういえば、そうだ…。
終わったあとで『List::AllUtils』とか、
配列の代名詞みたいなモジュールがあるじゃあいか!
とか思って後悔したので、ここでご紹介
List::AllUtilsList::AllUtils - search.cpan.org
配列から、ユニークな要素を取り出したり、最大とか最小の要素を取り出したり、配列の順番を混ぜたりとかいろいろできるので、かなり強力なモジュールですよ!