如何访问此数据结构中的元素?

时间:2011-10-04 13:57:44

标签: perl perl-data-structures

我有一个名为$ ip_data的变量,当我执行' print $ ip_data;' 它显示如下:ARRAY(0x3c353cc4);

Data :: Dump给了我以下结构:

[
 {
   ip => "127.0.0.1",
   list => [
     "France",
     "Safari",
   ],
 },
]

我想提取ip(IP地址),countrybrowser并将其放在一个如下所示的哈希值中:

%ip_info = (  ip       => '127.0.0.1',
              country  => 'France',
              browser  => 'Safari' );

到目前为止,我所有取消引用它的尝试都失败了。据我所知,$ ip_data是一个具有元素哈希的数组,该哈希的第一个元素是一个字符串,但第二个元素是一个包含两个字符串元素的数组。

我错了吗?如果是这样,请告诉我这里发生了什么以及如何在%ip_info中获取这些元素。

2 个答案:

答案 0 :(得分:3)

$ip_data是对包含单个元素(哈希引用)的数组的引用。您可以像这样构建哈希:

my %ip_info = (
    ip      => $ip_data->[0]{ip},
    country => $ip_data->[0]{list}[0],
    browser => $ip_data->[0]{list}[1],
);

我建议您阅读perlref手册页,了解有关在Perl中使用引用的更多信息。

答案 1 :(得分:1)

eugene y的回答为您提供了具体的用例。要了解详情,请阅读perldoc perlreftut和完整故事perldoc perlref