Array :: Vergleichen.

Array :: Compare ist eine Perl-Erweiterung zum Vergleich von Arrays.
Jetzt downloaden

Array :: Vergleichen. Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Dave Cross
  • Website des Verlags:
  • http://search.cpan.org/~davecross/Array-Compare-1.14/lib/Array/Compare.pm

Array :: Vergleichen. Stichworte


Array :: Vergleichen. Beschreibung

Array :: Compare ist eine Perl-Erweiterung zum Vergleich von Arrays. Synopsis verwenden Array :: Vergleichen; mein $ comp1 = array :: vergleichen-> neu; $ comp-> sep ('|'); $ comp-> überspringen ({3 => 1, 4 => 1}); $ comp-> whitespace (0); $ comp-> Fall (1); Mein $ comp2 = Array :: Compare-> NEU (SEP => '|', Whitespace => 0, Fall => 1, überspringen => {3 => 1, 4 => 1}); mein @ arr1 = 0 .. 10; mein @ arr2 = 0 .. 10; $ comp1-> Vergleichen (@ ARRR1, @ ARR2); $ comp2-> Vergleichen (@ ARR1, @ ARR2); Wenn Sie zwei Arrays haben und Sie wissen möchten, ob sie gleich oder verschieden sind, dann ist Array :: Vergleichen nützlich für Sie. Alle Vergleichen werden über einen Komparator ausgeführt Objekt. In der einfachsten Verwendung können Sie ein Komparatorobjekt wie folgt erstellen und verwenden: My @ ARR1 = 0 .. 10; mein @ arr2 = 0 .. 10; mein $ comp = array :: vergleichen-> neu; if ($ comp-> Vergleich (@ ARR1, @ ARR2)) {drucken "Arrays sind die Samen"; } else {drucken "arrays sind unterschiedlich"; } Beachten Sie, dass Sie die Verweise auf die beiden Arrays an die Vergleichsmethode übergeben. Der Komparator vergleicht den Komparator die beiden Arrays mithilfe von Join, um beide Arrays in Saiten zu verwandeln und die Saiten mit EQ zu vergleichen. In den verbundenen Zeichenfolgen werden die Elemente der ursprünglichen Arrays mit dem ^ g-Zeichen getrennt. Dies kann zu Problemen führen, wenn Ihre Array-Daten ^ g Zeichen enthalten, da es möglich ist, dass zwei verschiedene Arrays in dieselbe Zeichenfolge umgewandelt werden können. Um dies zu vermeiden, ist es möglich, das Standard-Separator-Zeichen entweder durch Übergeben und Alternativ zu überschreiten FUNKTION MEIN $ comp = Array :: Compare-> NEU (SEP => '|'); oder durch Ändern des Seperators für ein vorhandenes Komparator-Objekt $ comp-> sep ('|'); Im Allgemeinen sollten Sie ein Trennzeichen wählen Das wird nicht in Ihren Daten erscheinen Der Standardwert ist, dass jeder Whitespace signifikant ist. Die Alternative besteht darin, dass alle aufeinanderfolgenden weißen Platzfiguren in einem einzelnen Raum für die PRUPOES des Vergleichs umgewandelt werden. Dies kann wieder eingeschaltet werden, wenn ein Komparatorobjekt erstellt wird: My $ comp = Array :: Compare-> NEU (Whitespace => 0); oder durch Ändern eines vorhandenen Objekts: $ comp-> whitespace (0); Sie können auch kontrollieren, ob der Fall der Daten im Vergleich signifikant ist oder nicht. Der Standardwert ist, dass der Fall von Daten berücksichtigt wird. Dies kann bei der Erstellung eines neuen Komparatorobjekts auf die Standardwege geändert werden: My $ comp = Array :: Compare-> NEU (Case => 0); oder durch Ändern eines vorhandenen Objekts: $ comp-> Fall (0); in Zusätzlich zu dem oben beschriebenen einfachen Vergleich (der true, wenn die Arrays das gleiche und false zurückgeben, wenn sie unterschiedlich sind), gibt es auch einen vollständigen Vergleich, der eine Liste enthält, die die Indizes von Elementen enthält, die sich zwischen den beiden Arrays unterscheiden. Wenn die Arrays gleich sind, gibt es eine leere Liste zurück. Im skalaren Kontext gibt der vollständige Vergleich die Länge dieser Liste zurück (d. H. Die Anzahl der Elemente, die sich unterscheiden). Sie können auf zwei Arten auf den vollen Vergleich zugreifen. Erstens gibt es ein defektes Attribut. Wenn dies true ist, dann ein voller Vergleich, wenn er ausgeführt wird, wenn die Vergleichsmethode aufgerufen wird. mein $ comp = array :: vergleichen-> neu (defull => 1); $ comp-> Vergleich (@ ARRR1, @ ARR2); # Vollständiger Vergleich $ comp-> defull (0); $ comp-> Vergleich (@ ARRR1, @ ARR2); # Einfacher Vergleich $ comp-> defull (1); $ comp-> Vergleich (@ ARRR1, @ ARR2); # Vollständiger Vergleich erneut, Sie können auf die vollständige Vergleichsmethode direkt auf $ comp-> full_compare (@ ARRR1, @ ARR2) zugreifen. Für Symmetrie gibt es auch eine direkte Methode, um den einfachen Vergleich aufzurufen. $ comp-> Simple_compare (@ ARR1, @ ARR2); Die endgültige Komplikation ist die Fähigkeit, Elemente im Vergleich zu überspringen. Wenn Sie wissen, dass sich zwei Arrays in einem bestimmten Element immer unterscheiden, möchten jedoch die Arrays miteinander vergleichen, die dieses Element ignorieren, können Sie es mit Array :: vergleichen, ohne Array-Slices einzunehmen. Dazu hat ein Komparatorobjekt ein optionales Attribut namens Skip, das ein Hinweis auf einen Hash ist. Die Tasten in diesem Hash sind die Indizes der Array-Elemente, und die Werte sollten ein echter Wert für Elemente sein, die übersprungen werden sollten. Wenn Sie zwei Arrays vergleichen möchten, ignorieren Sie die Werte in Elementen zwei und vier, können Sie die Werte in Elementen verwenden so etwas: mein% überspringen = (2 => 1, 4 => 1); meine @a = (0, 1, 2, 3, 4, 5); mein @b = (0, 1, x, 3, x, 5); mein $ comp = array :: vergleichen-> neu (überspringen =>% überspringen); $ comp-> vergleichen (@a, @b); Dies sollte true zurückgeben, da wir die Säulen ausdrücklich ignorieren, die sich unterscheiden Comps-> Skip ({1 => 1, 2 => 1}); oder: My% Skip = (1 => 1, 2 => 2); $ comp-> überspringen (% überspringen); Um den Komparator zurückzusetzen, so dass nicht mehr Elemente mehr überspringt, setzen Sie den Sprunghash auf einen leeren Hash. $ comp-> überspringen ({}); Sie können auch überprüfen, ob ein Array eine Permutation eines anderen ist, d. H. Sie enthalten jedoch die gleichen Elemente, jedoch in einer anderen Reihenfolge. Wenn ($ comp-> perm (@a, @b) {drucken "Arrays sind Permsn"; anders {drucken "NOPE. Arrays sind vollständig anders";} In diesem Fall werden in diesem Fall die Werte von Whitespace und Case immer noch verwendet, sondern überspringen wird hoffentlich ignoriert, hoffentlich offensichtliche Gründe. Erregt: · Perl


Array :: Vergleichen. Zugehörige Software