我有一个数组哈希.
%HoA = ( 'C1' => ['1','3','3'],'C2' => ['3','2'],'C3' => ['1','4','5','5'],'C4' => ['3','4'],'C5' => ['1'],);
我想编写一个子例程,它返回一个数组的“子副本”哈希,它包含数组原始哈希的前N个键(及其值).
像这样的东西
my %HoA2 = new_partition(\%HoA,3);
它返回一个新的HoA数据结构:
%HoA = ( 'C1' => ['1',);
有没有办法在不使用模块的情况下划伤?
解决方法
没有“前N个元素”,因为散列键的顺序没有定义,因此不能依赖.
如果你想要任何三个元素而不是前三个元素,你可以使用
%HoA = @HoA{ ( keys %HoA )[0..2] };