Son @ {} $ list_ref y @ $ list_ref equivalente en Perl?
-
18-09-2019 - |
Pregunta
Soy nuevo en Perl y tengo curiosidad si @{$list_ref}
y @$list_ref
son perfectamente equivalentes.
Se parecen ser intercambiables, pero estoy nervioso que hay algo sutil pasando para que pueda hacer falta.
Solución
Sí, son equivalentes. Es necesario apoyos cuando la expresión es más que una variable escalar simple, por ejemplo. ,
push @{ $foo{$bar} } => "baz";
Para más detalles, ver el Uso de sección de la href = "http://perldoc.perl.org/perlref.html" rel = "nofollow noreferrer"> documentación sobre referencias . La documentación estándar Perl también incluye varios tutoriales sobre el uso de referencias:
- Comprender Referencias Hoy (mencionado por Hobbs en los comentarios de la pregunta)
- Manipulación de matrices de matrices en Perl
- Estructuras de Datos Perl Cookbook
Otros consejos
Siempre he encontrado que es útil recordar que los apoyos exteriores no son magia sintáctica, son sólo un bloque que devuelve una referencia. La expresión en el interior del bloque puede ser cualquier cosa que devuelve una referencia:
$ perl -le 'sub foo {[qw/ apple orange banana /]} print ${print "Do something here."; foo()} [1]'
Do something here.
orange