- 论坛徽章:
- 0
|
本帖最后由 antonym55 于 2011-09-10 16:55 编辑
来晚了,楼主问的什么的没看到,还好有快照,还原一下问题
- #!/usr/bin/perl
- ######################################################
- #想请问下. 如果有个数组
- #[[A,1,2,3],[B,4,5],[A,6,7],[B],[C,8]...]
- #如果实现合并成如下呢(以子数组的第一个元素来合并)
- #[[A,1,2,3,6,7],[B,4,5],[C,8]...]
- ######################################################
- use warnings;
- use strict;
- use Data::Dumper;
- my $ref_arr = [['A',1,2,3,4], ['B', 34,7,98], ['A', 6,7,8], ['C', 56, 1], ['B', 45,7,8], ['D', 69, 890, 11]];
- my %mergehash = ();
- my $mer_arr = [];
- for my $item (@$ref_arr)
- {
- if( !exists $mergehash{$item->[0]})
- {
- $mergehash{$item->[0]} = $item;
- }
- else
- {
- my ($key) = shift @$item;
- push @{$mergehash{$key}}, @$item;
- }
- }
- for my $key (sort {$a cmp $b}(keys %mergehash))
- {
- push @$mer_arr, $mergehash{$key};
- }
- print Dumper(%mergehash);
- print "Got array ref : \n";
- print Dumper($mer_arr);
复制代码
|
|