Comment puis-je initialiser un tableau 2D dans Perl?
J'essaie le code suivant: p> mais il donne l'erreur suivante: p> < BlockQuote>
ne peut pas utiliser String ("1") en tant que tableau Réf. tandis que "référencement strict" en utilisation à ./dyn_pf.pl Ligne 20. P>
blockQuote> Cette syntaxe semble initialiser un tableau 1D comme print "$ image_events [1] \ n" fonctionne. Bien que Perl ne donne aucune erreur lors de l'affectation. P> p>
4 Réponses :
Vous ne pouvez pas avoir de matrice de tableaux dans Perl, uniquement un tableau de références à des tableaux.
print "$frame_events[1][1]\n";
Notez que cela n'empêche pas les gens de dire "hachage de hachage", "gamme de hachas", etc. dans la conversation quotidienne, car il est compris i> que chaque valeur d'un hash ou d'une matrice est un scalaire , donc nous savons tous que nous parlons de références.
Pour initialiser un tableau N * N: mon @frame_events = (carte {[(0) x $ n], (1 .. $ n)}); code>
en Perl Un tableau avec deux tableaux de travail est fusionné dans un seul tableau. Vous voulez des références pour les tableaux internes si vous ne les voulez pas concaténés. Voici une vidage de votre code: résultat: p> et si vous passez à des créateurs de référence, des crochets au lieu des parents, avec Ce code: p> vous obtenez ceci: p>
"En Perl, une matrice avec deux tableaux de travail est fusionnée dans un seul tableau" - inexact. listes i> get aplatie i>. Il n'y a pas de tableaux ici. :)
@Mark: Donnez un poisson à un homme, vous allez le nourrir aujourd'hui. Enseigner à l'homme de la pêche, vous allez le nourrir au reste de la vie. Ry4n a donné du poisson à vous. Vlad Romascanu et Sinan Ünür essayent de vous apprendre à la pêche.
Le moyen le plus rapide est d'utiliser la commande push. p>
$ taille = 10; Push @matrix, [(0) x $ taille] pour (0. $ Taille); P>
Ceci créera un tableau 10x10 initialisé avec des zéros. P>
En fait une matrice 10x11.