2010-10-01 44 views
0

我需要創建一個多維數組,它將被傳遞給一個類。在Perl類中使用多維數組

這裏是示例代碼,我可以引用類外的數組元素,但是一旦我創建了一個類並傳遞了多維數組,我就無法在類中引用它。

輸出:

我的數組值= 3

無法使用字符串( 「1」)作爲數組引用而 「嚴格參」 在使用中test.pl線18。

package TestClass; 
use strict; 

sub new 
{ 
    my $class = shift; 
    my $self = 
    { 
     _array => shift 
    }; 
    bless $self, $class; 
    return $self; 
} 

sub print 
{ 
    my ($self) = @_; 
    print "TestClass variable = " . @{$self->{_array}->[0]}[1] . "\n"; 
} 

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

print "My Array Value = " . @{@my_array->[1]}[0] . "\n"; 

my $class = new TestClass(@my_array); 

$class->print; 

1; 

回答

4

你傳遞一個列表有兩個元素到你的構造函數,每一個元素是您構建的陣列裁判之一。

我相信你想傳遞一個包含其它兩個匿名數組引用而不是數組引用:

TestClass->new(\@my_array); 

你的陣列取消引用在@{@my_array->[1]}[0]也有點奇怪。這是use warnings;將會發生的事情。

+1

同意。 '$ my_array [1] [0]'(或'$ self - > {_ array} [0] [1]')似乎更易於閱讀。 – 2010-10-01 15:46:01

+0

工作很好,謝謝! – Trevor 2010-10-01 15:57:18