【问题标题】:How do I push a value onto a Perl hash of arrays?如何将值推送到数组的 Perl 散列?
【发布时间】:2011-04-16 07:19:54
【问题描述】:
%TEST ; 

... 
for  {
   sub atest
   }
 sub atest {
 ...
    push $TEST { TEST1 }[0] = "some value " 
}

如何在不了解索引的情况下将值推送到数组哈希中?

我如何实现这一目标?

【问题讨论】:

    标签: arrays perl hash


    【解决方案1】:

    这将通过“TEST1”键将值添加到存储在哈希中的数组末尾。

    push( @{ $TEST { TEST1 } }, "some value "); 
    

    我使用@{...} 取消引用数组引用。 Perl 在需要时自动创建内部数组引用。

    【讨论】:

      【解决方案2】:

      push 函数接受一个数组,因此您必须将其返回到一个数组中:

      push @{$TEST{TEST1}}, "some value";
      

      另外,你的风格让我觉得你没有使用strict pragma。编写该代码的更好方法是:

      #!/usr/bin/perl
      
      use strict;
      use warnings;
      
      sub atest {
          my $test = shift;
          push @{$test->{TEST1}}, "some value";
      }
      
      my %test;
      atest(\%test);
      
      use Data::Dumper;
      
      print Dumper \%test;
      

      【讨论】:

      • 现在你有了一个由数组组成的散列。
      • @Matt Kane 是的,当我回去充实它时,我注意到了。
      【解决方案3】:

      我想你想要:

      %TEST;
      $TEST{TEST1}[0] = "some value"
      push @{ $TEST{TEST1} }, "some other value"
      

      现在,$TEST{TEST1} 应该等同于 ["some value", "some other value"]

      【讨论】:

        猜你喜欢
        • 2019-08-21
        • 2020-11-25
        • 2021-11-05
        • 1970-01-01
        • 1970-01-01
        • 2011-08-15
        • 2014-01-16
        • 2014-05-19
        • 2012-07-10
        相关资源
        最近更新 更多