2010-06-03 9 views
7

Im folgenden Perl-Code, würde ich erwarten, eine Array-Referenz innerhalb eines Arrays zu referenzierenPerl, dereferenzieren Array von Referenzen

#!/usr/bin/perl 

use strict; 
use warnings; 

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

my @b = @$a[0]; 

print $b[0]; 

jedoch nicht zu funktionieren scheint. Ich würde es Ausgang zu erwarten 1.

@a ist ein Array von Referenzen

@b ist $a[1] dereferenziert (glaube ich)

Also, was ist das Problem?

Antwort

10

Dieses Zeug ist knifflig.

@$a[0] als (@$a)[0] analysiert, dereferencing die (undefined) Skalar $a

Sie wollten @{$a[0]} sagen.

+0

Es gibt so viele Macken in Perl, an die ich mich immer noch gewöhne. Vielen Dank für Ihre Hilfe – Mike

+6

Wenn Sie Zweifel haben, fügen Sie einfach weitere Klammern hinzu: D – Ether

Verwandte Themen