Perl在哈希数据集之前推送一个键

时间:2014-06-07 14:44:36

标签: perl hashmap hashtable

我设法用子程序

创建一个哈希数据集
my %check_ip = (
    "data1" => $ip1,
    "data2" => $ip2,
    "data3" => $ip3
    ); 

      'data1' => '127.0.0.1',
      'data2' => '192.168.0.1',
      'data3' => '192.168.1.1'

这是一个简单的哈希。 我想在这背后添加另一个键,这样就会成为哈希的哈希,看起来像

config1 =>
      'data1' => '127.0.0.1',
      'data2' => '192.168.0.1',
      'data3' => '192.168.1.1',

最好的方法是什么?

3 个答案:

答案 0 :(得分:2)

要创建嵌套哈希,您需要哈希引用。

my %check_ip = (
      data1 => $ip1,
      data2 => $ip2,
      data3 => $ip3,
    );
my %config = ( config1 => \%check_ip );

答案 1 :(得分:2)

#!/usr/bin/perl
use strict;
use warnings;
my $ip1='127.0.0.1';
my $ip2='192.168.0.1';
my $ip3='192.168.1.1';
my %check_ip = (
                 config1 => { "data1" => $ip1,
                              "data2" => $ip2,
                              "data3" => $ip3, },
           ); 

访问如下:

print $check_ip{config1}{data1}; #output 127.0.0.1

Demo

答案 2 :(得分:1)

由于散列键只能有一个值,因此需要将嵌套散列存储为散列引用,这是大括号{}用于:

my %check_ip = (
                 config1 => { "data1" => $ip1,
                              "data2" => $ip2,
                              "data3" => $ip3, },
               ); 

有关Perl数据结构的更多信息,请参阅perldoc perldsc