Perlの2次元配列でpushする方法

Perlの2次元配列でpushする方法

Posted at July 3,2014 12:55 AM
Tag:[Array, Perl]

Perlの2次元配列でpushする方法を紹介します。

Perlの2次元配列でpush

1.問題点

Perlで配列変数を定義します。

my @foo;

pushするには次のようにします。

push @foo, "OK";

配列のリファレンスの場合、

my $foo;

pushするには次のようにします。

push @{$foo}, "OK";

が、2次元配列でpushする方法が分かりません。

2.2次元配列でpushする

2次元配列でpushするには次のようにします。なお、1次元はpushする位置を特定させるため「0」「1」という値で指定します。

#!/usr/bin/perl
use strict;
use Data::Dumper;
 
my @foo;
push @{$foo[0]}, "1-1";
push @{$foo[0]}, "1-2";
push @{$foo[1]}, "2-1";
push @{$foo[1]}, "2-2";
 
print Dumper(\@foo);

上記のコードを実行すると、次のようになります。

$VAR1 = [
          [
            '1-1',
            '1-2'
          ],
          [
            '2-1',
            '2-2'
          ]
        ];

配列のリファレンスの場合は次のようにします。

#!/usr/bin/perl
use strict;
use Data::Dumper;
 
my $foo;
push @{$foo->[0]}, "1-1";
push @{$foo->[0]}, "1-2";
push @{$foo->[1]}, "2-1";
push @{$foo->[1]}, "2-2";
 
print Dumper($foo);

上記のコードを実行すると、次のようになります。

$VAR1 = [
          [
            '1-1',
            '1-2'
          ],
          [
            '2-1',
            '2-2'
          ]
        ];

3.最後のインデックスで指定する

記事の主旨からはずれますが、pushを用いないのであれば「Perlの配列のリファレンスで最後のインデックスを指定する」で紹介したような、最後のインデックスを指定して設定する方法もあります。

配列の場合、次の赤色部分のようにします。

push @{$foo[0]}, "1-1";
push @{$foo[0]}, "1-2";
push @{$foo[1]}, "2-1";
push @{$foo[1]}, "2-2";
$foo[0][$#{$foo[0]}+1] = "1-3";

配列のリファレンスの場合、次の赤色部分のようにします。

push @{$foo->[0]}, "1-1";
push @{$foo->[0]}, "1-2";
push @{$foo->[1]}, "2-1";
push @{$foo->[1]}, "2-2";
$foo->[0]->[$#{$foo->[0]}+1] = "1-3";

4.pushと最後のインデックスで指定する

pushと最後のインデックスの組み合わせで指定する方法も紹介します。

この方法では常に2次元の最後に値が追加されます。また、値が事前に設定されていることが前提になります。

配列の場合、次の赤色部分のようにします。

push @{$foo[0]}, "1-1";
push @{$foo[0]}, "1-2";
push @{$foo[1]}, "2-1";
push @{$foo[1]}, "2-2";
push @{$foo[$#foo]}, "2-3";

配列のリファレンスの場合、次の赤色部分のようにします。

push @{$foo->[0]}, "1-1";
push @{$foo->[0]}, "1-2";
push @{$foo->[1]}, "2-1";
push @{$foo->[1]}, "2-2";
push @{$foo->[$#$foo]}, "2-3";
関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)