У меня есть 10 массивов, каждый из которых состоит из значений одинакового типа. Я хочу захватить подмножество этих значений (захватить только цифры) из каждого массива, а затем сравнить его с подмножеством из другого массива. А также, я хочу захватить числовую часть значений из обоих массивов, только когда в значении нет тире (т. Е. 2EF = capture '2', но если 45F-, то ничего не захватывать, перейти к значение).
_ ДАННЫЕ _
@ array1 = (-, 1EF, 2DG, 3GF, 4F-, -, .... 99GY);
@ array2 = (-, 1EF, 2DF, 3SD, 4DE, -, .... 99HK);
Любые два массива из 10 можно сравнивать одновременно. Итак, я сохранил их в массиве '@allarrays
' и зациклил его для сравнения. В следующем сценарии я могу точно захватить цифру первого массива, но не могу сравнить цифры из второго массива. Значение $ digit1 (соответствует @ array1) копируется в $ digit2 (соответствует @ array2). Любые предложения о том, что идет не так?
sub compareArrays {
my @array = @_; #passes an array @allarray which has @array1, @array2 ...@array10
for (my $p=0; $p<10; $p++){ # since total number of arrays is 10
for (my $r=$p+1; $r<10; $r++){ #to compare arrays
for (my $q=0; $q<$colsInArray; $q++){
my $string1= $array[$p][$q];
my $string2= $array[$r][$q];
#array1
$string1=~ /(\d+)[A-Z]+/;
my $digit1 = $1; #capture digit part of array value
print "array1: $digit1\n"; #works fine, prints captured $digit1
#array2
$string2=~ /(\d+)[A-Z]+/;
my $digit2 = $1;
print "array2: $digit2\n"; #does not capture the value in $digit2, instead copies $digit1
if ($digit1 == $digit2){
print "$digit1 : $digit2\n";
}
}
}
}
}
_ ОБНОВЛЕНИЕ _
вызывая CompareArrays как:
&compareArrays(@allarrays);