在Perl类中使用多维数组

时间:2010-10-01 15:36:43

标签: perl multidimensional-array

我需要创建一个将传递给类的多维数组。

下面是示例代码,我可以在类之外引用数组元素,但是一旦我创建了一个类并传递了多维数组,我就无法在类中引用它。

输出:

我的数组值= 3

在test.pl第18行使用“strict refs”时,不能使用字符串(“1”)作为ARRAY参考。

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;

1 个答案:

答案 0 :(得分:4)

您将带有两个元素的列表传递给构造函数,每个元素都是您构建的数组引用之一。

我相信你想传递一个包含另外两个匿名数组引用的数组引用:

TestClass->new(\@my_array);

@{@my_array->[1]}[0]中的数组解引用也有点奇怪。这是use warnings;会抓住的东西。