perlによる、多次元配列に順次代入していく方法、多次元配列の出力、特定のキーでのソート

例えば以下のように宣言すれば、多次元配列を生成することができる。

my @array = ([1,2,3],[4,5,6]);

簡単な出力方法として、例えば以下の方法があるらしい。

foreach my $ref(@array){
    print "@$ref\n";
}

出力結果

1 2 3
4 5 6


多次元配列の値を最初に宣言(代入)するのではなく、順次、多次元配列に値を追加(代入)するにはどうすればよいかというと、pushを使う方法があるらしい。

#!/usr/bin/perl
use strict;
use warnings;

my @array;

push(@array,([1,2,3]));
push(@array,([4,5,6]));

foreach my $ref(@array){
    print "@$ref\n";
}

出力結果

1 2 3
4 5 6

ソート

上に例で言えば、「1と4」だとか「2と5」という風に、特定のキーについてソートを行いたい場合がある。これも簡単にできるらしい。

#!/usr/bin/perl
use strict;
use warnings;

my @array;

push(@array,([1,2,3]));
push(@array,([4,5,2]));
push(@array,([0,0,0]));

foreach my $ref(@array){
    print "@$ref\n";
}

my @newarray = sort{$a->[1] <=> $b->[1]}@array;
print "\n";

foreach my $ref(@newarray){
    print "@$ref\n";
}

@newarray = sort{$a->[2] <=> $b->[2]}@array;
print "\n";

foreach my $ref(@newarray){
    print "@$ref\n";
}

出力

1 2 3
4 5 2
0 0 0

0 0 0
1 2 3
4 5 2

0 0 0
4 5 2
1 2 3