2010-06-03 10 views
7

En el siguiente código de Perl, yo esperaría que se hace referencia a un conjunto de referencia dentro de una matrizPerl, eliminar la referencia de matriz de referencias

#!/usr/bin/perl 

use strict; 
use warnings; 

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

my @b = @$a[0]; 

print $b[0]; 

Sin embargo, no parece funcionar. Yo esperaría que la salida 1.

@a es una matriz de referencias

@b se eliminan las referencias $a[1] (creo)

Entonces, ¿cuál es el problema?

Respuesta

10

Esto es complicado.

@$a[0] se analiza como (@$a)[0], eliminación de referencias a la (no definido) escalar $a

Querías decir @{$a[0]}.

+0

Hay tantas peculiaridades en Perl que todavía me estoy acostumbrando. gracias por su ayuda – Mike

+6

En caso de duda, solo agregue más llaves: D – Ether

Cuestiones relacionadas