我尝试创建一个perl结构数组。每个结构包含两个标量和一个哈希。 后来我想找到一个数组项,获取哈希并在哈希中找到一个标量。
我可以在数组中找到该项并获取标量。 但我并不知道如何正确获取哈希值及其中的值。
我尝试了/没有参考。
非常感谢
#hash
%latestInfo = (
8 => '30',
);
#struct
package Myobj;
use Class::Struct;
struct( name => '$', majorVer => '$', latestVer => '%');
$w1 = new Myobj;
$w1->name('test');
$w1->majorVer(5);
$w1->latestVer($latestInfo);
#array with all version information
@versions=($w1, ...);
sub getVersionFromMajor
{
foreach $ver (@versions) {
if ($ver->majorVer eq $_[0]) {
return $ver;
}
}
}
#
#main
#
#ok: get version info from structures/array
local($ver) = getVersionFromMajor(5);
local($n) = $ver->name;
#fail: get hash inside item
my $latest = \$ver->latestVer;
%lat = $ver->latestVer;
#fail: get value inside hash
local($m) = $latest{8};
答案 0 :(得分:2)
这一位:
$w1->latestVer($latestInfo);
应该是:
$w1->latestVer(\%latestInfo);
%latestInfo
和$latestInfo
是两个不相关的变量 - %latestInfo
是您的哈希值,$latestInfo
是未声明的(因此undef
)标量。 \%latestInfo
是对%latestInfo
的标量引用,这是最新的Ver方法(由Class :: Struct创建)要求你提供它。
如果您已完成use strict
并宣布所有变量,Perl会告诉您$latestInfo
不存在。
此外,这一点:
%lat = $ver->latestVer;
应该是:
%lat = %{ $ver->latestVer };