【问题标题】:Dereference array of hashes in perl. experimental warning在 perl 中取消引用哈希数组。实验警告
【发布时间】:2019-10-17 20:19:04
【问题描述】:

访问我的数组时收到警告。这可能是一种 unperl 循环方式,但我正在自学 perl,并且我正在尝试不同的场景。我可以遍历%user,但不知道如何遍历数组哈希引用?

my %user;
$user{mike}{emp_id} = 1;
$user{john}{emp_id} = 2;
my @user = \%user;

foreach my $value_hash (@users)
{
   #error line
   foreach my $key (keys $value_hash) 
   { 
      foreach my $id (keys %{ $users{$key} }) 
      {
         print "name: $key\t$id: $users{$key}{$id}\n";
      }
  }
  print "\n";
}

【问题讨论】:

  • 提示:foreach my $value_hash (@users) 毫无意义。 @users 总是只包含一个值,所以你可以很容易地使用my $value_hash = \%user;。但是为什么要创建一个引用呢?
  • 访问我的数组时收到警告 未来的提示。总是值得确切地说出您看到的警告消息。
  • 感谢您的建议。我只是在 perl 中尝试不同的东西。我不经常使用它,但我必须维护一些代码并且我遇到了该代码。

标签: perl


【解决方案1】:

keys EXPR 是一个实验性功能,已被废弃和删除。

$ 5.22t/bin/perl -e'my $h = {}; keys $h;'
keys on reference is experimental at -e line 1.

$ 5.24t/bin/perl -e'my $h = {}; keys $h;'
Experimental keys on scalar is now forbidden at -e line 1.

keys的正确使用方式是

keys HASH
keys ARRAY

替换

keys $value_hash

keys %$value_hash

keys %{ $value_hash }

第二次你已经正确使用了。

【讨论】:

    猜你喜欢
    • 2018-02-25
    • 1970-01-01
    • 2011-10-11
    • 2016-04-25
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 2011-07-26
    相关资源
    最近更新 更多