gpt4 book ai didi

arrays - 如何在Perl中访问哈希数组?

转载 作者:行者123 更新时间:2023-12-04 13:27:54 25 4
gpt4 key购买 nike

我有一个很大的哈希数组,我想从该数组中获取一些哈希值并插入到新数组中,而无需更改第一个数组。我在将哈希推送到数组时遇到问题,如何访问作为哈希的ith元素。

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";
}

这两个数组具有相同的哈希值。

如果要制作深拷贝,而不仅仅是引用,可以分配一个新的哈希并将 ith元素复制到副本中。然后将副本存储在 @modifymyhash
my $copy = {};
%{$copy} = %{$myarray[$i]};
push (@modifymyhash, $copy);

关于arrays - 如何在Perl中访问哈希数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15510161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com