私は perl でオブジェクトに苦労しており、2 次元配列を作成してオブジェクトのハッシュ フィールドに格納しようとしています。2次元配列を作成するには、配列への参照の配列が必要であることを理解していますが、それを実行しようとすると、次Type of arg 1 to push must be array (not hash element)
のエラーが発生します。コンストラクターは正常に動作し、正常にset_seqs
動作しますが、create_matrix
サブがこれらのエラーをスローしています。
これが私がやっていることです:
sub new {
my ($class) = @_;
my $self = {};
$self->{seq1} = undef;
$self->{seq2} = undef;
$self->{matrix} = ();
bless($self, $class);
return $self;
}
sub set_seqs {
my $self = shift;
$self->{seq1} = shift;
$self->{seq2} = shift;
print $self->{seq1};
}
sub create_matrix {
my $self = shift;
$self->set_seqs(shift, shift);
#create the 2d array of scores
#to create a matrix:
#create a 2d array of length [lengthofseq1][lengthofseq2]
for (my $i = 0; $i < length($self->{seq1}) - 1; $i++) {
#push a new array reference onto the matrix
#this line generates the error
push(@$self->{matrix}, []);
}
}
私が間違っていることについて何か考えはありますか?