Je suis un peu nouveau sur Perl, mais voici ce que je veux faire:
my @array2d;
while(<FILE>){
Push(@array2d[$i], $_);
}
Il ne compile pas puisque @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.
Pour créer un tableau de tableaux, ou plus précisément un tableau 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];
Changez votre ligne "Push" en ceci:
Push(@{$array2d[$i]}, $_);
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.
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 FILE, 3) le placer dans @array2d
.
Si vous essayez simplement de stocker un fichier dans un tableau, vous pouvez également le faire:
fopen(FILE,"<somefile.txt");
@array = <FILE>;
close (FILE);
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;