2012-02-19 16 views
3

Perlオブジェクトで配列の配列を使用しようとしていますが、まだ動作していません。ここでPerlオブジェクト内の配列の配列

はコンストラクタです:

sub new { 
    my $class = shift; 
    my $self = {}; 
    $self->{AoA} = []; 
    bless($self, $class); 
    return $self; 
} 

そして、ここでは、AoAのにものを挿入したコードの一部です:

push (@{$self->{AoA}}[$row], $stuff); 

私はまだ配列を定義する方法に何かを見つけることができませんコンストラクタの配列の

答えて

4

AoAをコンストラクタで定義する必要はありません。最上位の配列参照のみです。祝福されたハッシュに関する限り、AoAは単なる配列リファレンスです。

あなたのコンストラクタは完璧です。挿入するには

、あなたは2件の観光名所:

# Make sure the row exists as an arrayref: 
$self->{AoA}->[$row] ||= []; # initialize to empty array reference if not there. 
# Add to existing row: 
push @{ $self->{AoA}->[$row] }, $stuff; 

それとも、あなたが知られているインデックスの要素を追加する場合は、単に

$self->{AoA}->[$row]->[$column] = $stuff; 

push @{$self->{AoA}}[$row]を行うとあなたの問題は、配列を間接参照ということでした1レベルが早すぎます。

+0

次に、配列の1つに物を押し込む以外に何が必要ですか?または私は間違った方法を押していますか? – claf

+0

@claferri - 更新されました。申し訳ありませんが、あまりにも早く保存されました – DVK

+0

ありがとう、それは働いて、私はブラケットを間違って配置:) – claf

関連する問題