- 论坛徽章:
- 307
|
本帖最后由 sunzhiguolu 于 2016-08-14 12:48 编辑
回复 6# stanley_tam - #!/usr/bin/perl
- use strict;
- use warnings;
- open (my $FHb, '<', './b');
- my (@aChars, %hStat) = ('A' .. 'C');
- map {my @aT = split; $hStat{$aT[1]}{$aT[0]}{'Values'} = [@aT[2, -1]]; @{$hStat{$aT[1]}{$aT[0]}}{@aChars} = (0) x 3} <$FHb>;
- close ($FHb);
- open (my $FHa, '<', './a');
- while (defined (local $_ = <$FHa>)){
- my @aA = split;
- while (my ($sKey, $v) = each %{$hStat{$aA[0]}}){
- if ($aA[1] >= $v->{'Values'}->[0] and $aA[1] <= $v->{'Values'}->[-1]){
- $hStat{$aA[0]}{$sKey}{$aA[-1]}++;
- }
- }
- }
- close ($FHa);
- while (my ($id, $v) = each %hStat){
- foreach (keys %$v){
- my $rh = $hStat{$id}{$_};
- print join ("\t", $_, $id, @{$rh->{'Values'}}, @{$rh}{@aChars}), "\n";
- }
- }
复制代码 perl abc.pl
----------------------------------------------------------------------------
len_2 01 432 452 0 0 1
len_1 01 330 401 1 3 0
len_3 01 500 600 0 3 4
|
|