2009-12-09 9 views
5

Soy nuevo en Perl y tengo curiosidad por saber si @{$list_ref} y @$list_ref son perfectamente equivalentes.

Parecen intercambiables, pero me preocupa que haya algo sutil que pueda estar pasando por alto.

+11

Lectura recomendada: 'perldoc perlreftut'. Desglosa casi todo lo que necesitas saber sobre referencias en piezas muy simples, para que puedas aprender con confianza :) – hobbs

+1

@hobbs Esa es la segunda vez que he visto a alguien mencionado. Creo que será mejor que lo lea. :-) –

+1

@hobbs +1; también perllol: http://perldoc.perl.org/perllol.html –

Respuesta

10

Sí, son equivalentes. Necesita llaves cuando la expresión es más que una simple variable escalar, p.,

push @{ $foo{$bar} } => "baz"; 

Para más detalles, véase la sección Using References del documentation on references. La documentación estándar Perl también incluye varios tutoriales sobre el uso de referencias:

6

Siempre he encontrado útil recuerde que las llaves externas no son magia sintáctica, solo son un bloque que devuelve una referencia. La expresión dentro del bloque puede ser cualquier cosa que devuelva una referencia:

$ perl -le 'sub foo {[qw/ apple orange banana /]} print ${print "Do something here."; foo()} [1]' 
Do something here. 
orange 
Cuestiones relacionadas