Perl termini mi confondono e non è la mia lingua madre, quindi abbi pazienza con me. Proverò ad usare i termini giusti, ma darò un esempio solo per essere sicuro.Perché perl non mi consente di dereferenziare un membro di un riferimento hash in un array?
Quindi ho un riferimento hash nella variabile $ pippo. Diciamo che $ pippo -> {'bar'} -> {'baz'} è un riferimento di matrice. Cioè posso ottenere il primo membro dell'array assegnando $ pippo -> {'bar'} -> {'baz'} -> [0] a uno scalare.
quando faccio questo:
foreach (@$foo->{'bar'}->{'baz'})
{
#some code that deals with $_
}
ottengo l'errore "Non è un riferimento ad array in linea script.pl 41"
Ma quando faccio questo funziona:
$myarr = $foo->{'bar'}->{'baz'};
foreach (@$myarr)
{
#some code that deals with $_
}
C'è qualcosa che non capisco? C'è un modo per far funzionare il primo esempio? Ho provato a racchiudere l'espressione tra parentesi con @ all'esterno, ma non ha funzionato. Grazie in anticipo per l'aiuto.
Il parser deve capire cosa intendi, e la sintassi che provi al primo tentativo di dereferenziare @ $ pippo, che non puoi nel tuo caso. Si tratta di come diversi token si legano alle cose che li circondano. Abbiamo una spiegazione più lunga in _Intermediate Perl_. :) –