Sono @ {$ list_ref} e @ $ list_ref equivalente in Perl?
-
18-09-2019 - |
Domanda
Sono nuovo di Perl e sono curioso di sapere se @{$list_ref}
e @$list_ref
sono perfettamente equivalenti.
Sembrano essere intercambiabili, ma io sono nervoso che ci sia qualcosa di sottile succede che io possa mancare.
Soluzione
Sì, sono equivalenti. È necessario parentesi graffe quando l'espressione è più di una semplice variabile scalare, per es. ,
push @{ $foo{$bar} } => "baz";
Per maggiori dettagli, vedere la Utilizzando sezione del href = "http://perldoc.perl.org/perlref.html" rel = "nofollow noreferrer"> documentazione su riferimenti . La documentazione standard di Perl include anche diversi tutorial sull'utilizzo di riferimenti:
- Comprendere riferimenti Oggi (fornita dal Hobbs nei commenti della domanda)
- Manipolazione Array di Array in Perl
- Perl Strutture Dati Cookbook
Altri suggerimenti
Ho sempre trovato utile ricordare che le parentesi esterne non sono magici sintattica, sono solo un blocco che restituisce un riferimento. L'espressione all'interno del blocco può essere qualsiasi cosa che restituisce un riferimento:
$ perl -le 'sub foo {[qw/ apple orange banana /]} print ${print "Do something here."; foo()} [1]'
Do something here.
orange