2010-06-03 17 views
7

Nel seguente codice Perl, mi sarei aspettato di essere riferimento a un riferimento ad array all'interno di una matricePerl, un array di riferimenti dereferenziare

#!/usr/bin/perl 

use strict; 
use warnings; 

my @a=([1,2],[3,4]); 

my @b = @$a[0]; 

print $b[0]; 

Tuttavia non sembra funzionare. Mi aspetterei che all'uscita 1.

@a è un array di riferimenti

@b è $a[1] dereferenziato (credo)

Allora qual è il problema?

risposta

10

Questa roba è difficile.

@$a[0] viene analizzato come (@$a)[0], dereferenziazione il (non definito) scalare $a

Volevi dire @{$a[0]}.

+0

ci sono così tante stranezze in Perl a cui mi sto ancora abituando. grazie per il tuo aiuto – Mike

+6

In caso di dubbi, aggiungi solo altre parentesi: D – Ether

Problemi correlati