en parcourant une liste en Perl
Je commence à apprendre le Perl et c'est juste une petite base pour la boucle pour lequel j'ai une drôle de sortie et espérais un peu de clarté sur ce point.
@numbers = {1,4,5,6,7,8,9};
for(my$i = 0; $i<=$#numbers; $i++)
{
print ("$numbers[$i}\n");
}
la sortie est de HACHAGE(0x23a09c).
Qu'est-ce cela signifie réellement et pourquoi dois-je obtenir ce résultat.
ce qui concerne
Arienne
Votre exemple a une erreur de syntaxe. Assurez-vous de poster ce que vous utilisez réellement.
Je vais, désolé...merci
Je vais, désolé...merci
OriginalL'auteur Arianule | 2011-11-06
Vous devez vous connecter pour publier un commentaire.
Vous voulez que cela:
Avec
{1,4,5,6,7,8,9}
que vous êtes en train de créer une référence à un anonyme de hachage contenant les paires clé-valeur(1 => 4, 5 => 6, 7 => 8, 9 => undef)
. Lorsque vous écrivez@numbers = {1,4,5,6,7,8,9};
que la référence devient l'unique scalaire stockées dans le@numbers
tableau.En outre, si vous voulez juste pour itérer sur les éléments, pas besoin d'utiliser le style "classique" avec un compteur.
Que vous pouvez faire:
Assurez-vous d'avoir
use strict;
etutilisez les mises en garde;
au début de chaque script Perl que vous écrivez. Ces directives permettentperl
pour détecter les erreurs et de les avertir de certaines éventuellement erronées code. Comme un débutant, vous pourriez voulez quelques ceux avecwarnings
avec diagnostics pour obtenir des informations plus détaillées.Ils sont très pratique, surtout lors du démarrage avec Perl comme ils vous aider à prévenir tirer une balle dans le pied.
Pas de prob 🙂 j'ai encore des difficultés avec Perl un peu moi-même. Veuillez accepter si cela résout votre problème. Merci
OriginalL'auteur pcalcao
Ce que vous faites là est la création d'un tableau avec une valeur de hachage ref à l'indice 0, c'est à dire:
Si vous aviez utilisé le strict vous avez vu:
Et les avertissements aurais dit:
Commencer tous vos scripts perl avec quelque chose comme:
(sinon
use warnings;
) et vous serez toujours en mesure de prendre ces types d'erreurs. Même expérimenté programmeurs Perl faire de temps en temps. Il n'est jamais vraiment une bonne raison de les laisser (sauf si vous êtes le golf qui est).use strict; use warnings;
On dirait que quelqu'un pourrait avoir lu stackoverflow.com/q/8023959/725418 après tout. =)
OriginalL'auteur flesk
essayer:
il y avait deux problèmes. l'un dans la boucle elle-même, l'un avec la déclaration. ma réponse axée sur la boucle et ce plus court solutions de substitution. merci pour le commentaire, cependant, je l'ai édité mon post!
print $_
est redondante.OriginalL'auteur interphase27