- 论坛徽章:
- 145
|
本帖最后由 jason680 于 2015-05-07 16:20 编辑
回复 1# 摇摆蝶仙
didn't use seek and tell if your data sorted already
$ perl get_range.pl
19 in 11 to 20
21 in 21 to 30
23 in 21 to 30
49 in 41 to 50
$ cat get_range.pl
use strict;
use warnings;
open(data1, "<data1") or die "can't open data1\n";
open(data2, "<data2") or die "can't open data2\n";
my($sMin, $sMax) = ("","");
while(<data2>){
chomp;
next if(m/^\s*$/);
if($sMin eq "" or $sMax < $_){
DATA1:
while (my $sData = <data1>){
chomp $sData;
next DATA1 if($sData =~ m/^\s*$/);
my @aData = split(/\s+/,$sData);
if(@aData != 2){
die "get error: $sData\n";
}
($sMin, $sMax) = @aData;
#print "$_,$sMin,$sMax\n";
next DATA1 if($sMax < $_);
if($sMin > $_){
die "$_ cannot match the range in data1\n";
}
last DATA1;
}
}
if( $sMin <= $_ and $_ < $sMax){
print "$_ in $sMin to $sMax\n";
}
}
close;
|
|