Zuerst müssen Ihre 2 Arrays korrekt geschrieben werden.
%Vor%Zweitens können Sie für beliebige Arrays (zB Arrays, deren Elemente Verweise auf andere Datenstrukturen sein können) % verwenden. co_de% .
Bei Arrays, deren Elemente skalar sind, können Sie einen Vergleich mit Data::Compare
List::MoreUtils
durchführen, wobei BLOCK ist Ihre Vergleichsunterroutine. Sie können pairwise BLOCK ARRAY1 ARRAY2
emulieren (wenn Sie keinen Zugriff auf List :: MoreUtils haben) über:
P.S. Ich bin mir nicht sicher, aber List :: Compare kann die Listen immer sortieren. Ich bin nicht sicher, ob es paarweise Vergleiche machen kann.
Aktivieren Sie diese Option, um eine Schnittpunktfunktion zu erstellen, die eine Liste von Elementen zurückgibt, die in beiden Listen vorhanden sind. Dann hängt Ihr Rückgabewert von der Anzahl der Elemente in der durchschnittenen Liste ab.
Sie können im Web einfach die beste Implementierung von intersect für Perl finden. Ich erinnere mich, dass ich vor ein paar Jahren danach gesucht habe.
Folgendes habe ich gefunden:
%Vor% Beachten Sie, dass Sie Perl 5.10 oder höher benötigen, um den intelligenten Match-Operator zu verwenden ( ~~
).
Meiner Meinung nach sollten Sie List :: MoreUtils :: pairwise verwenden. Wenn Sie jedoch aus irgendeinem Grund nicht können, gibt das folgende Sub eine 1 für jeden Index zurück, wo der Wert in dem ersten Array gleich dem Wert in dem zweiten Array vergleicht. Sie können diese Methode beliebig verallgemeinern und Ihren eigenen Komparator übergeben, wenn Sie das möchten, aber zu diesem Zeitpunkt installieren Sie einfach Liste :: MoreUtils wäre eine produktivere Nutzung Ihrer Zeit.
%Vor%