我有一个散列,里面充满了数据。我把它加到一个数组中。然后,我想修改我的散列,但要确保数组中的内容保持不变。我正在尝试这样做,但不起作用:
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
我觉得我需要在添加到数组之前做一个副本。怎么做?我不需要深层副本,我的哈希只包含字符串。
vltsax251#
我不需要深层副本,我的哈希只包含字符串。然后,您可以创建哈希的浅层副本:
my @a; my %h; %h{foo} = 1; my %copy_of_h = %h; push(@a, \%copy_of_h); %h = ();
另请参阅this解答了解如何复制哈希引用。有关Perl数据结构的更多信息,请参阅perldsc和perldata。
1条答案
按热度按时间vltsax251#
我不需要深层副本,我的哈希只包含字符串。
然后,您可以创建哈希的浅层副本:
另请参阅this解答了解如何复制哈希引用。有关Perl数据结构的更多信息,请参阅perldsc和perldata。