私は Perl を初めて使用し、@{$list_ref}
と@$list_ref
が完全に同等であるかどうかに興味があります。
それらは互換性があるように見えますが、私が見逃しているかもしれない微妙なことが起こっているのではないかと心配しています.
私は Perl を初めて使用し、@{$list_ref}
と@$list_ref
が完全に同等であるかどうかに興味があります。
それらは互換性があるように見えますが、私が見逃しているかもしれない微妙なことが起こっているのではないかと心配しています.
はい、同等です。式が単純なスカラー変数以上のものである場合、中かっこが必要です。
push @{ $foo{$bar} } => "baz";
詳細については、参照に関するドキュメントの「参照の使用」セクションを参照してください。標準の Perl ドキュメントには、参照の使用に関するいくつかのチュートリアルも含まれています。
外側の中かっこは構文上の魔法ではなく、参照を返す単なるブロックであることを常に覚えておくと役に立ちます。ブロック内の式は、参照を返すものなら何でもかまいません:
$ perl -le 'sub foo {[qw/ apple orange banana /]} print ${print "Do something here."; foo()} [1]'
Do something here.
orange