- 论坛徽章:
- 0
|
- use strict;
- my $current = 0;
- my $ABC = [];
- my $DEF = [];
- while (<DATA>)
- {
- $current++;
- if ( $_ =~ /^ABC:\s*(\d+)$/)
- {
- push @$ABC, [ $current, $1 ];
- }
- if ( $_ =~ /^DEF:\s*(\d+)$/)
- {
- push @$DEF, [ $current, $1 ];
- }
- }
- # here we get the ABC and DEF lines infor
- # for each ABC line, there is
- for my $abc_line (@$ABC){
- my $res = {};
- my $min_dis = $current;
- for my $def_line (@$DEF){
- if(abs($def_line->[0] - $abc_line->[0]) < $min_dis){
- $min_dis = abs($def_line->[0] - $abc_line->[0]);
- $res->{$abc_line->[1]} = $def_line->[1];
- }
- }
- my ($key, $value) = each %$res;
- print "$key = $value\n";
- }
- __DATA__
- ABC: 1234
- XXXXXXXX
- FJjlfakjdl
- DEF: 1
- XXXXXXXXX
- ABC: 21543215
- XXXXXXXX
- jfalkj
- DEF: 2
- #########
复制代码 |
|