我有一个像这样的perl变量。 如何访问内联属性(如'706')?
my @config = [
{
'x' => [ 565, 706 ],
'y' => [ 122 ],
'z' => 34,
'za' => 59,
}
];
编辑: print Dumper($config[0]);
收益:$VAR1 = undef;
看起来我使用$config[0][0]->{x}[1];
获取了访问权限。为什么我必须使用[0] [0](一个是清楚的,但他是第二个......)?
EDIT2:我很抱歉更改了数据结构,但是给我的定义发生了变化。
答案 0 :(得分:4)
您的变量相当于:
my $config = [
'x', [ 565, 706 ],
'y', [ 122 ],
'z', 34,
'za', 59,
];
所以如果你想获得706,你可以这样做:
print $config->[1][1];
根据问题中的新数据进行了更新
使用更新的问题,您现在可以通过以下方式访问:
say $config->[0]{x}[1];
根据新数据结构进行的新更新
根据您提供的最新更新数据结构:
my @config = [
{
'x' => [ 565, 706 ],
'y' => [ 122 ],
'z' => 34,
'za' => 59,
}
];
你指定一个包含哈希{...}的匿名数组[...] 到数组@config,这将填充@config的第一个元素 使用匿名数组
say Dumper \@config;
$VAR1 = [
[
{
'y' => [
122
],
'za' => 59,
'x' => [
565,
706
],
'z' => 34
}
]
];
say $config[0][0]{x}[1]; #prints 706
我想你想要做任何一件事:
my $config = [
{
'x' => [ 565, 706 ],
'y' => [ 122 ],
'z' => 34,
'za' => 59,
}
];
say $config->[0]{x}[1]; #prints 706
my @config = (
{
'x' => [ 565, 706 ],
'y' => [ 122 ],
'z' => 34,
'za' => 59,
}
);
say $config[0]{x}[1]; #prints 706
答案 1 :(得分:3)
[编辑: 按照转换问题定义。]
假设:
my @config = (
[
{ # NB: insertion order ≠ traversal order
"x" => [ 565, 706 ],
"y" => [ 122 ],
"z" => 34,
"za" => 59,
},
],
);
然后就可以了:
# choice §1
print $config[0][0]{"x"}[-1]; # get 1ˢᵗ row’s xᵗʰ row’s last element
当然理解这仅仅是语法糖:
# choice §2
print $config[0]->[0]->{"x"}->[-1]; # get 1ˢᵗ row’s xᵗʰ row’s last element
那只是语法糖:
# choice §3
print ${ $config[0] }[0]->{"x"}->[-1]; # get 1ˢᵗ row’s xᵗʰ row’s last element
反过来只是语法糖:
# choice §4
print ${ ${ $config[0] }[0] }{"x"}->[-1]; # get 1ˢᵗ row’s xᵗʰ row’s last element
再次是语法糖:
# choice §5
print ${ ${ ${ $config[0] }[0] }{"x"}}[-1]; # get 1ˢᵗ row’s xᵗʰ row’s last element
当然,这相当于:
# choice §6
print ${ ${ ${ $config[0] }[0] }{"x"} }[ $#{ ${ ${ $config[0] }[0] }{"x"} } ]; # get 1ˢᵗ row’s xᵗʰ row’s last element