- 论坛徽章:
- 32
|
稍微长了点~- #!/usr/bin/perl
- use 5.010;
- my ( %hash, %max, %min );
- while (<DATA>) {
- @_ = split;
- my ($head) = /([^.]+)/;
- if ( ! $hash{$head} ) {
- $hash{$head} = $_[-3];
- $n=1;
- $max{$head}{$n} = $_[-1];
- $min{$head}{$n} = $_[-2];
- } else {
- if ( $_[-2] >= $min{$head}{$n} && $_[-2] <= $max{$head}{$n} && $_[-1] > $max{$head}{$n} ) {
- $max{$head}{$n} = $_[-1];
- } elsif ( $_[-2] < $min{$head}{$n} && $_[-1] >= $min{$head}{$n} && $_[-1] <= $max{$head}{$n} ) {
- $min{$head}{$n} = $_[-2];
- } elsif ( $_[-2] >= $min{$head}{$n} && $_[-1] <= $max{$head}{$n} ) {
- } else {
- ++$n;
- $max{$head}{$n} = $_[-1];
- $min{$head}{$n} = $_[-2];
- }
- }
- }
- for my $key ( sort keys %hash ) {
- for ( keys %{$max{$key}} ) {
- say join "\t", $key, "$hash{$key}=$_", $min{$key}{$_}, $max{$key}{$_};
- }
- }
- __DATA__
- a.1 1 3 b 2 8
- a.2 2 5 b 5 9
- a.3 3 6 b 4 7
- a.4 2 4 b 12 15
- c.1 3 8 d 1 7
- c.2 4 8 d 6 8
复制代码- [root@localhost ~]# ./p
- a b=1 2 9
- a b=2 12 15
- c d=1 1 8
- [root@localhost ~]#
复制代码 |
|