2010-06-03 59 views
7

Trong mã Perl sau, tôi sẽ mong đợi để được tham khảo một tài liệu tham khảo mảng bên trong một mảngPerl, mảng dereference tài liệu tham khảo

#!/usr/bin/perl 

use strict; 
use warnings; 

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

my @b = @$a[0]; 

print $b[0]; 

Tuy nhiên nó không có vẻ để làm việc. Tôi mong chờ nó ra 1.

@a là một mảng của tài liệu tham khảo

@b được $a[1] dereferenced (tôi nghĩ)

Vì vậy, vấn đề là những gì?

Trả lời

10

Công cụ này rất phức tạp.

@$a[0] được phân tách như (@$a)[0], dereferencing các (không xác định) vô hướng $a

Bạn muốn nói @{$a[0]}.

+0

có quá nhiều điều kỳ quặc trong Perl mà tôi vẫn quen. cảm ơn sự giúp đỡ của bạn – Mike

+6

Khi nghi ngờ, chỉ cần thêm nhiều dấu ngoặc: D – Ether

Các vấn đề liên quan