perl 如何创建哈希的浅层副本?

aurhwmvo  于 2022-12-13  发布在  Perl
关注(0)|答案(1)|浏览(137)

我有一个散列,里面充满了数据。我把它加到一个数组中。然后,我想修改我的散列,但要确保数组中的内容保持不变。我正在尝试这样做,但不起作用:

my @a;
my %h;
%h{foo} = 1;
push(@a, \%x);
%h = (); # here I clean the hash up
# but I want the array to still contain the data

我觉得我需要在添加到数组之前做一个副本。怎么做?我不需要深层副本,我的哈希只包含字符串。

vltsax25

vltsax251#

我不需要深层副本,我的哈希只包含字符串。
然后,您可以创建哈希的浅层副本:

my @a;
my %h;
%h{foo} = 1;
my %copy_of_h = %h;
push(@a, \%copy_of_h);
%h = ();

另请参阅this解答了解如何复制哈希引用。有关Perl数据结构的更多信息,请参阅perldsc和perldata。

相关问题