São @ {$ list_ref} e @ $ list_ref equivalente em Perl?
-
18-09-2019 - |
Pergunta
Eu sou novo para Perl e estou curioso se @{$list_ref}
e @$list_ref
são perfeitamente equivalentes.
Eles parecem ser intercambiáveis, mas estou nervoso que há algo sutil acontecendo que eu pode estar faltando.
Solução
Sim, eles são equivalentes. Você precisa de chaves quando a expressão é mais do que uma variável escalar simples, por exemplo. ,
push @{ $foo{$bar} } => "baz";
Para obter mais detalhes, consulte a seção do usando referências href = "http://perldoc.perl.org/perlref.html" rel = "nofollow noreferrer"> documentação sobre referências . A documentação padrão Perl também inclui vários tutoriais sobre como usar referências:
- Entenda Referências Hoje (mencionado por Hobbs nos comentários da questão)
- Manipulando matrizes de matrizes em Perl
- Estruturas Perl Dados Cookbook
Outras dicas
Eu sempre achei útil lembrar que as chaves exteriores não são mágicos sintática, eles são apenas um bloco que retorna uma referência. A expressão dentro do bloco pode ser qualquer coisa que retorna uma referência:
$ perl -le 'sub foo {[qw/ apple orange banana /]} print ${print "Do something here."; foo()} [1]'
Do something here.
orange