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.

Était-ce utile?

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:

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top