2011-10-04 69 views
2

我有一个名为$ ip_data的变量,当我做'print $ ip_data;'时它显示如下:ARRAY(0x3c353cc4);如何访问此数据结构中的元素?

数据::转储给我的结构如下:

[ 
{ 
    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中的元素。

+0

您希望的“目标”散列有一个键,而该键的值是undef。你想(parens)而不是{curlies} – tadmc

+0

固定。谢谢tadmc。 – Dragi

回答

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使用参考。

+0

感谢eugene y的快速响应。即将到来的周末将是我的“grok的参考或死亡”周末:) – Dragi

+1

perlreftut有一个很好的温柔的介绍:http://perldoc.perl.org/perlreftut.html – friedo