Je me bats à travers des objets en perl, et j'essaie de créer un tableau 2D et de le stocker dans un champ de hachage de mon objet. Je comprends que pour créer un tableau 2d j'ai besoin d'un tableau de références à des tableaux, mais quand j'essaie de le faire, je reçois cette erreur: Type of arg 1 to push must be array (not hash element)
Le constructeur fonctionne très bien, et set_seqs
fonctionne très bien, mais mon create_matrix
sub jette ces erreurs.Comment stocker un tableau 2d dans un hachage en Perl?
Voici ce que je fais:
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}, []);
}
}
Toute idée de ce que je fais mal?
'pousser @ {$ self -> {matrix}}, [] ' –
Consultez le livre de recettes Data Structures via' perldoc perldsc' sur la ligne de commande ou sur le web avec http://perldoc.perl.org/perldsc.html C'est plein d'exemples pour créer et accéder aux structures de données. – daotoad