Question

Je suis un peu nouveau sur Perl, mais voici ce que je veux faire:

my @array2d;
while(<FILE>){
  push(@array2d[$i], 

Je suis un peu nouveau sur Perl, mais voici ce que je veux faire:

<*>

Il ne compile pas car @ array2d [$ i] n'est pas un tableau, mais une valeur scalaire.

Comment dois-je déclarer @ array2d en tant que tableau de tableau?

Bien sûr, je n'ai aucune idée du nombre de lignes que j'ai.

); }

Il ne compile pas car @ array2d [$ i] n'est pas un tableau, mais une valeur scalaire.

Comment dois-je déclarer @ array2d en tant que tableau de tableau?

Bien sûr, je n'ai aucune idée du nombre de lignes que j'ai.

Était-ce utile?

La solution

Pour créer un tableau de tableaux, ou plus précisément un tableau de références de tableaux, essayez quelque chose comme ceci:

my @array = ();
foreach my $i ( 0 .. 10 ) {
  foreach my $j ( 0 .. 10 ) {
    push @{ $array[$i] }, $j;
  }
}

Il pousse la valeur sur un tableau référencé déréférencé pour vous. Vous devriez pouvoir accéder à une entrée comme celle-ci:

print $array[3][2];

Autres conseils

Modifiez votre & push; push " ligne à ceci:

push(@{$array2d[$i]}, 

Modifiez votre & push; push " ligne à ceci:

<*>

En gros, vous faites de $ array2d [$ i] un tableau en l’entourant de @ {} ... Vous pouvez alors insérer des éléments dans ce tableau de références de tableaux.

);

En gros, vous faites de $ array2d [$ i] un tableau en l’entourant de @ {} ... Vous pouvez alors insérer des éléments dans ce tableau de références de tableaux.

Consultez perlref et perldsc pour voir comment créer des structures de données imbriquées, telles que des tableaux de tableaux et des hachages de hachages. Très utile lorsque vous utilisez Perl.

Il n'y a vraiment aucune différence entre ce que vous avez écrit et ceci:

@{$array2d[$i]} = <FILE>;

Je ne peux que supposer que vous parcourez des fichiers.

Pour éviter de garder la trace d'un compteur, vous pouvez procéder comme suit:

...
push @array2d, [ <FILE> ];
...

Cela signifie 1) créer une référence à un tableau vide, 2) stocker toutes les lignes dans le fichier, 3) l'insérer dans @ array2d .

Un autre moyen simple consiste à utiliser une table de hachage et à utiliser les deux index de tableau pour créer une clé de hachage:

$two_dimensional_array{"$i $j"} = $val;

Si vous essayez simplement de stocker un fichier dans un tableau, vous pouvez également le faire:

fopen(FILE,"<somefile.txt");
@array = <FILE>;
close (FILE);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top