【问题标题】:Hash to an Array in Perl哈希到 Perl 中的数组
【发布时间】:2011-02-22 04:30:37
【问题描述】:

我正在用 Perl 创建一个 Graph 类,我希望每个 Graph 都包含节点。每个节点都有一些属性,并且(目前)还有一个数组,其中包含对它所连接的每个其他节点的引用。到目前为止,我有一个节点的定义:

use strict;
package Node;

sub new{
    my $class = shift;
    my @array = (1,2,3);
    my $array_r = \@array;
    my $self = {
        code => undef,
    name => undef,
    country => undef,
    continent => undef,
    timezone => undef,
    coordinates => ("", "", "", ""),
    population => undef,
    region => undef,
    arrayRef => $array_r,
    @_,
};
bless $self, $class;
return $self;
}

在我的主脚本中调用以下函数时:

sub getSetArray{
my $self = shift;
return $self->{arrayRef};
}

并存储值并打印它: 我的 $val = $firstnode->getSetArray(); 打印@{$val};

我收到以下错误:

不能使用未定义的值作为 ARRAY 引用。

我猜我对引用的间接级别的理解不正确,但我似乎看不出发生了什么。

谢谢, -A

【问题讨论】:

    标签: arrays perl oop hash


    【解决方案1】:

    您的("","","","") 包含在{} 的键/值对中,让您望而却步。如果坐标也应该是一个数组引用,你想要["","","",""]

    【讨论】:

    • 哇,谢谢。这就是破坏它的原因。我最近才意识到哈希只能有标量或引用,并且只是试图修补有问题的原始数组。
    猜你喜欢
    • 2012-06-12
    • 2020-07-19
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 2011-07-26
    • 2011-04-20
    • 2011-07-02
    • 2012-12-07
    相关资源
    最近更新 更多