【问题标题】:Perl push a key before a hash data setPerl 在哈希数据集之前推送一个键
【发布时间】:2014-07-28 16:47:19
【问题描述】:

我设法用子程序创建了一个哈希数据集,

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',

最好的方法是什么?

【问题讨论】:

标签: perl hashmap hashtable


【解决方案1】:

由于哈希键只能有一个值,因此嵌套哈希需要存储为哈希引用,这就是花括号{} 的用途:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 感谢 Choroba。这正是我想要的。
    【解决方案3】:
    #!/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

    【讨论】:

      猜你喜欢
      • 2017-02-19
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      相关资源
      最近更新 更多