Frage

Ich bin neu in Perl und bin gespannt, ob @{$list_ref} und @$list_ref sind vollkommen gleichwertig.

Sie scheinen austauschbar zu sein, aber ich bin nervös, dass es etwas subtile los, dass ich fehle.

War es hilfreich?

Lösung

Ja, sie sind gleichwertig. Sie müssen Klammern, wenn der Ausdruck mehr als eine einfache skalare Variable ist, z.

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

Weitere Einzelheiten finden Sie in der Referenzen Abschnitt der Verwendung von Dokumentation auf Referenzen . Die Standard-Perl-Dokumentation enthält auch mehrere Anleitungen zur Verwendung von Referenzen:

Andere Tipps

Ich habe immer hilfreich sich daran zu erinnern, dass die äußeren Klammern Magie nicht syntaktische sind, sie sind nur einen Block, der einen Verweis zurückgibt. Der Ausdruck innerhalb des Blocks kann alles sein, das einen Verweis zurückgibt:

$ perl -le 'sub foo {[qw/ apple orange banana /]} print ${print "Do something here."; foo()} [1]'
Do something here.
orange
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top