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";
Posted by yujiro このページの先頭に戻る
- Perlでansibleライブラリを作成する方法
- perlのCPANモジュールからRPMを作成する方法
- Perlで「Subroutine permission redefined at~」を抑止する方法
- XML::Simpleのインストールでエラーになる場合の対処
- YAML::Tinyで「YAML::Tiny found bad indenting in line~」というエラーになる場合の対処
- Perlの正規表現を使って文字列をまとめて取得する方法
- Perlのハッシュでキーの有無を調べる方法
- perlで配列の途中の要素を削除する方法
- YAML::Tinyでコロンを利用する方法
- Perlで改行コードがCRのファイルを読み込む方法
- Perlで「Possible precedence issue with control flow operator」という警告の対処
- PerlのLWPで「Can't verify SSL peers without knowing which Certificate Authorities to trust」というエラーになったときの対処
- Perl+Windowsでファイルを再帰的にリネームする方法
- Perlプログラムの中でファイルの一部を書き換える方法
- Perlの「Bareword "%s" not allowed while "strict subs" in use~」というエラーについて
トラックバックURL
コメントする
greeting