-2
我想檢查其他範圍的範圍。例如:如何檢查perl範圍內的範圍?
進行檢查:
check1: 10-50
check2: 100-150
check3: 500-600
的地方,檢查:
range1: 49-100
range2: 800-900
我想如果存在範圍1或範圍2等檢查在CHECK1每個號碼。如果有任何數字存在,則打印範圍。對於這裏:check1中有50個出現在range1中。 100是check2出現在range1中。但是,檢查3不在範圍1或範圍2中。這怎麼能實現?
我開始喜歡這個數據在4列:
#!/usr/bin/perl
use warnings;
use strict;
use v5.16;
my (@check1, @check2, @range1, @range2);
my $header = <DATA>;
foreach (<DATA>){
chomp $_;
my @columns = split "\t", $_;
#check (check1 to check2) in range (all range1 to range2) both inclusive
#check 3631 5899 in all range1 to range2, if found print YES
#check 3760 5630 in all range1 to range2, if found print YES
}
__DATA__
#check1 check2 range1 range2
3631 5899 4706 5095
3760 5630 5174 5326
3631 3913 7834 8989
請顯示您正在嘗試執行的操作以及爲什麼它不起作用。這與SO有關,你可以通過_ code code_獲得幫助。 (你也應該解釋數據來自哪裏等) – zdim
'my $ range = Set :: IntSpan('49 -100,800-900'); if($ range-> intersect('10 -50')){...}'或'my $ range = Set :: IntSpan([[49,100],[800,900]]);如果($ range-> intersect([[10,50]])){...}' – ysth
在你的文本中聽起來像你想檢查check1範圍對所有的range1,range2,range3,但在你的代碼這聽起來像你只想檢查一行上的check1-check2範圍與該行上的range1-range2範圍。你可以解釋嗎?還添加你的預期輸出它;這可能會澄清。 – ysth