Sont @ {$} list_ref de et @ $ list_ref équivalent en Perl?
-
18-09-2019 - |
Question
Je suis nouveau à Perl et je suis curieux de savoir si @{$list_ref}
et @$list_ref
sont parfaitement équivalents.
Ils semblent être interchangeables, mais je suis nerveux qu'il ya quelque chose de subtil passe que je manquerai.
La solution
Oui, ils sont équivalents. Vous avez besoin d'accolades lorsque l'expression est plus qu'une simple variable scalaire, par exemple.
push @{ $foo{$bar} } => "baz";
Pour plus de détails, consultez le Utilisation de la section Références du documentation sur les références . La documentation Perl standard comprend également plusieurs tutoriels sur l'utilisation de références:
- Comprendre Références Aujourd'hui (mentionné par hobbs les commentaires de la question)
- tableaux de tableaux Manipulation en Perl
- Structures de données Perl Cookbook
Autres conseils
Je l'ai toujours trouvé utile de se rappeler que les accolades externes ne sont pas magiques syntactique, ils sont juste un bloc qui renvoie une référence. L'expression à l'intérieur du bloc peut être quelque chose qui renvoie une référence:
$ perl -le 'sub foo {[qw/ apple orange banana /]} print ${print "Do something here."; foo()} [1]'
Do something here.
orange