perl/二次元配列が作れた。〜リファレンスとデリファレンスを使用〜
perlに多次元配列がないということは、以前、本で知った。しかし、多次元配列がないといろいろ不便では?、と思い、ちょっと実験してみた。よーは、例えば、配列の中に配列を作るとなると、配列はスカラーしか持てないんだから、ポインタ(perlではリファレンスですね。すみません)でつっこんだらいいんじゃないかと思った訳です。てなわけで、実験をしてみました。
#! usr/bin/perl use strict; use warnings; use Data::Dumper; # 一元配列を宣言し、それを別の配列に入れて二次元配列を作ってみる。 my @array1=(1,4,2,8,4); my @array2=('at','hhdng','y7ngfm','jirgx','htrhfb'); my @array3=(44,678,'komage','gamage',6345); my @array=( @array1, @array2, @array3 ); print Dumper \@array; # 配列は、各要素にスカラーしか持てないので、配列要素にしようとしても無理〜。 print "\n"; print "@array","\n"; print "\n"; # ということで、スカラー値である配列のリファレンスを入れてみるー。 @array=( \@array1, \@array2, \@array3 ); print Dumper \@array; print "\n"; # 二次元配列が作れたのはいいけど、いちいち一元配列を宣言するのがめんどくさいなー、ということで、他のやり方を探してみた。 # 「無名配列」という方法があるそうな。 my @non_array=( [4444,6666,7777,8888,9999], ["lplplp","kokokoko"], [51234,"ko53i1ni4","53okjgndn63o"] ); print Dumper \@non_array; print "\n"; # 二次元配列の要素の取り出し方〜。 print $non_array[0]->[0],"\n";#これと以下の3行は同じことー。 my $ref_non_array=\@non_array; print $ref_non_array,"\n"; print $ref_non_array->[0]->[0],"\n";