Bretelles bouclées entourant variable
J'ai ce bout de code que je vais essayer d'obtenir ma tête autour de moi, je ne sais même pas si sa syntaxiquement correct (partie de l'exercice, je suppose!)
%{$records}
Ce qui ne les accolades signifie? J'ai vu le même cas mais avec un @
opérateur utilisé à la place de la $
si cela fait une différence.
Merci les gars!
source d'informationauteur andrew Patterson
Vous devez vous connecter pour publier un commentaire.
La “À l'aide des Références de la” section de la documentation perlref explique.
Dans votre cas,
$records
doit être une référence à un hachage (en raison de la ultrapériphériques%
),{$records}
est un bloc qui retourne la référence, et%{$records}
donne l'origine de hachage.Les accolades autour d'un de bonne foi bloc. En fait, vous pouvez remplacer le code ci-dessus avec
Mais même la version plus courte de votre question pourrait être simplifiée, comme l'a souligné plus tôt dans la documentation.
Parce que
$records
est un simple scalaire,%$records
est à la base de hachage.Si, au lieu
$records
étaient une référence à un tableau, la syntaxe de déréférencement il serait@$records
ou@{$records}
.En commun avec de nombreux shells Unix, Perl permet l'utilisation des accolades pour délimiter les identifiants de variable, de sorte
my ${scalar}
est le même quemy $scalar
. Ceci est utile, par exemple, lorsque interepolating la valeur d'une variable dans une chaîne, lorsque"$scalartext"
va chercher une variable avec l'identifiantscalartext
quand ce qui est prévu est$scalar.'text'
. Au lieu de cela, vous pouvez écrire"${scalar}text"
pour obtenir le résultat correct.Perl acceptera une nu identifiant de variable ou une expression retournant une référence à une variable à l'intérieur des accolades, alors
%{$hashref}
est le même que%$hashref
. Notez qu'un chaîne est inacceptable car elle est considérée comme une référence symbolique qui est une erreur sousstrict 'refs'
donc${'scalar'}
est le problème ici.Dans votre cas,
%{$records}
est identique à%$records
et certains préfèrent parce qu'il rend le déréférencement clair. Il représente la valeur de hachage à qui de hachage de référence$records
se réfère.Il est de savoir comment vous déréférencer une référence.
Voir perldoc perlref.
Comme d'habitude, le
%
ou@
membres de ce genre de données que vous voulez ("hash" ou d'Un "tableau").Ceci est suivi par une bloc
{}
qui renvoie une référence pour le type de données approprié.Donc:
%{$records}
prend un scalaire ($records
) contenant une référence à un hachage, et vous donne en retour un code de hachage.