加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数组 – 如何在perl中访问哈希数组?

发布时间:2020-12-15 22:01:16 所属栏目:大数据 来源:网络整理
导读:我有一大堆哈希,我想从数组中获取一些哈希并插入新数组而不更改第一个数组.我有问题将哈希推送到数组,如何访问作为哈希的第i个元素. my @myarray;$my_hash-{firstname} = "firstname";$my_hash-{lastname} = "lastname";$my_hash-{age} = "25";$my_hash-{loc
我有一大堆哈希,我想从数组中获取一些哈希并插入新数组而不更改第一个数组.我有问题将哈希推送到数组,如何访问作为哈希的第i个元素.
my @myarray;
$my_hash->{firstname} = "firstname";
$my_hash->{lastname} = "lastname";
$my_hash->{age} = "25";
$my_hash->{location} = "WI";
push @myarray,$my_hash;

$my_hash->{firstname} = "Lily";
$my_hash->{lastname} = "Bily";
$my_hash->{age} = "22";
$my_hash->{location} = "CA";
push @myarray,$my_hash;

$my_hash->{firstname} = "something";
$my_hash->{lastname} = "otherthing";
$my_hash->{age} = "22";
$my_hash->{location} = "NY";
push @myarray,$my_hash;

my @modifymyhash;
for (my $i=0;$i<2; $i++)  {
        print "No ".$i."n";
        push (@modifymyhash,$myarray[$i]);
        print "".$myarray[$i]."n";  #How do I print first ith element of array which is hash.
 }

解决方法

首先你应该
use strict;
use warnings;

然后定义

my $my_hash;

在分配值之前初始化$my_hash,否则您将覆盖它,并且所有三个元素都指向相同的哈希

$my_hash = {};

最后,访问哈希的成员

$myarray[$i]->{firstname}

或者要打印整个哈希,例如可以使用Data::Dumper

print Dumper($myarray[$i])."n";

或其他一些方法,How can I print the contents of a hash in Perl?或How do I print a hash structure in Perl?

更新您的评论:

你复制哈希

push (@modifymyhash,$myarray[$i]);

进入新阵列,完美运作.你可以验证

foreach my $h (@myarray) {
    print Dumper($h),"n";
}

foreach my $h (@modifymyhash) {
    print Dumper($h),"n";
}

这两个数组都有相同的哈希值.

如果要创建深层副本,而不仅仅是引用,则可以分配新哈希并将第i个元素复制到副本中.然后将副本存储在@modifymyhash中

my $copy = {};
%{$copy} = %{$myarray[$i]};
push (@modifymyhash,$copy);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读