- 论坛徽章:
- 0
|
回复 #1 wanggd1983 的帖子
- use strict;
- my $new_data = mergen_data(
- get_data('f1.txt'), get_data('f2.txt')
- );
- print join "\n", @$new_data;
- sub get_data {
- my ($file) = @_;
- my $href = {};
- open F, $file or die "[$file]: $!\n";
- while(<F>) {
- chomp;
- my ($col1, $col2, $rest) = split /\s+/, $_, 3;
- if ($col1 and $col2) {
- $href->{$col1.$col2} = $rest;
- }
- }
- return $href;
- }
- sub mergen_data {
- my ($href1, $href2)= @_;
- my $aref = [];
- foreach my $key (keys %$href1) {
- if (exists $href2->{$key}) {
- my $value = 'F1: '. $key. ' '. $href1->{$key}. ' '.
- 'F2: '. $key. ' '. $href2->{$key};
- push @$aref, $value;
- delete $href1->{$key};
- delete $href2->{$key};
- }
- }
- push @$aref, 'F1: '. $href1->{$_} for keys %$href1;
- push @$aref, 'F2: '. $href2->{$_} for keys %$href2;
- return $aref;
- }
复制代码 |
|