Script Perl pour obtenir le premier élément de tableaux passés en référence
Je veux appeler une sous-routine en passant autour de 4 tables et ensuite obtenir la première valeur de chaque tableau et puis créer un nouveau tableau(tableau de premiers éléments de tableaux qui sont passés) dans le sous-programme et de revenir ensuite en arrière de ce tableau. Voici le code que j'ai essayé avec
my @a = (97,34,6,7);
my @b = ("A", "B", "F", "D");
my @c = (5..15);
my @d = (1..10);
my @tailings = popmany ( \@a, \@b, \@c, \@d );
print @tailings;
sub popmany {
my @retlist = ();
for my $aref (@_) { #1
my $arrele = @$aref; #2
push @retlist , $arrele #3
}
return @retlist;
}
Ici en #1-je utiliser une boucle et d'obtenir le premier tableau , puis dans la ligne 2-je attribuer la totalité du tableau à une variable, en pensant que, par défaut, le perl ne conserve la première variable de tableau dans @arrele. la je pousse le $arrele à un nouveau tableau @retlist , Désolé, je dint consulter toutes les notes, donc ma procédure peut être faux. Mais c'est en me jetant une sortie comme
441110
qui n'a pas de sens.
Merci de m'expliquer le code, comment je peux faire cela.
popmany
comme un nom est doublement trompeuse. pop
supprime dernier élément d'un tableau et renvoie. Ceci renvoie à la premier valeur sans modifier les tableaux.OriginalL'auteur mac | 2011-11-11
Vous devez vous connecter pour publier un commentaire.
C'est par ici:
où vous demandons de perl pour mettre
@{$aref}
dans un contexte scalaire, retourne la longueur (nombre d'éléments) le tableau pointé par $aref.Au lieu d'essayer:
qui permettra d'accéder au premier élément du tableau à la place.
Parce que $aref est un tableau ref et que vous essayez d'y accéder comme un tableau. Essayez
@$aref[0]
à la place si vous voulez désespérément d'éviter$aref->[0]
qui est beaucoup plus claire.$tref[0] signifie "premier élément du tableau @aref" mais $aref est un scalaire contenant une référence à un autre tableau, de sorte que vous devrez utiliser -> déréférencer en premier.
$$aref[0]
est également une option viable.J'ai pensé que j'ai écrit dans le commentaire ci-dessus, mais en regardant à nouveau, je vois que j'ai été un élément tranche de tableau. :$
OriginalL'auteur Alex
La ligne
assigne la longueur de la
@$aref
tableau de$arrele
. Pour obtenir le premier élément du tableau, vous pouvez utiliser:Aussi, puisque vous générez une liste basée sur une autre liste, vous pouvez utiliser
map
:OriginalL'auteur Eugene Yarmash
Beaucoup plus simplement écrit que
OriginalL'auteur Borodin
OriginalL'auteur run