我正在尝试找到区间的重叠部分。我有一个区间1000到5000(只是举例)。这将在下面给出的区间中进行检查。此脚本确实可以工作,但检查成千上万个区间时非常缓慢。有没有办法使其更快?谢谢。
#!/usr/bin/perl
use warnings;
use strict;
use v5.16;
use List::MoreUtils qw/ any /;
my $start = 1000;
my $end = 5000;
while ( my $line = <DATA> ) {
chomp $line;
my @element = split "\t", $line;
my @checking_array = "";
for my $checking_no ( $element[0] .. $element[1] ) {
push @checking_array, $checking_no;
}
for my $value ( $start .. $end ) {
if ( any { $_ eq $value } @checking_array ) {
print "$start to $end found in $line\n";
last;
}
else { next }
}
}
__DATA__
780895 781139
3707570 3707794
13753925 13754168
2409582 2409790
6360880 6361084
8261045 8261250
4133539 4133772
7731897 7732188
8660252 8660539
12156253 12156504
9136875 9137168
16657849 16658107
5000 6000
4133539 4133772
7731897 7732188
8660252 8660539
4999 10000
12156253 12156504
3707570 3707794
13753925 13754168
2409582 2409790
6360880 6361084
输出:
1000 to 5000 found in 5000 6000
1000 to 5000 found in 4999 10000