Ich habe 10 Arrays, die jeweils aus ähnlichen Arten von Werten bestehen. Ich möchte Teilmenge dieser Werte (erfassen Sie nur die Ziffern) von jedem Array und vergleichen Sie es dann mit Teilmenge von anderen Array. Außerdem möchte ich den Zahlenwert von Werten aus beiden Arrays nur dann erfassen, wenn es keinen Strich im Wert gibt (d. H. 2EF = Capture '2', aber wenn 45F- dann nichts erfasst, gehe zum nächsten Wert).Wie erfassen und vergleichen Sie Teilmengen von Werten aus verschiedenen Arrays?
_ DATA _
@ array1 = (-, 1EF, 2DG, 3GF, 4F-, -, .... 99GY);
@ array2 = (-, 1EF, 2DF, 3SD, 4DE, -, .... 99HK);
Beliebige zwei Arrays von 10 können gleichzeitig verglichen werden. Also, ich habe sie in einem Array '@allarrays
' gespeichert und es zum Vergleich durchlaufen. Im folgenden Skript kann ich die Ziffer des ersten Arrays perfekt erfassen, aber ich kann die Ziffern nicht mit dem zweiten Array vergleichen. Der Wert von $ digit1 (entsprechend @ array1) wird in $ digit2 (entsprechend @ array2) kopiert. Irgendwelche Vorschläge auf was geht schief?
sub compareArrays {
my @array = @_; #passes an array @allarray which has @array1, @array2 [email protected]
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";
}
}
}
}
}
_ UPDATE _ Aufruf compareArrays als:
&compareArrays(@allarrays);
Und was ist @allarrays? Da das, was Sie gepostet haben, grundsätzlich funktioniert, müssen Sie ein ausführbares Beispiel veröffentlichen, einschließlich der Initialisierung der Arrays, damit wir sehen können, welcher Teil nicht funktioniert. – ysth