Array::Utils - Arrays von Strings schnell vergleichen

Veröffentlicht von Thomas Fahle am (Permalink)

3603549564_6042a3df87_m.jpg

Array::Utils von Sergei A. Fedorov erlaubt es schnell und einfach Arrays von Zeichenketten (Strings) zu vergleichen.

 

Für andere Datentypen ist dieses Modul, trotz seines eher generischen Namens, nicht geeignet.

 

Array::Utils stellt folgende Funktionen zur Verfügung:

  • Symmetrische Differenz zweier Arrays
  • Schnittmenge zweier Arrays
  • Vereinigungsmenge zweier Arrays
  • Subtraktion zweier Arrays

 

Symmetrische Differenz

Es handelt sich um die Menge aller Elemente, die jeweils in einer, aber nicht in beiden Mengen liegen.

#!/usr/bin/perl
use strict;
use warnings;

use Array::Utils qw(:all);

my @list_01 = qw/Hans Otto Fritz/;
my @list_02 = qw/Wilhelm Otto/;

# symmetric difference
my @diff = array_diff(@list_01, @list_02);

print join(", ", @list_01), "\n";
print join(", ", @list_02), "\n";
print join(", ", @diff), "\n";

Das Programm erzeugt folgende Ausgabe:

Hans, Otto, Fritz
Wilhelm, Otto
Hans, Fritz, Wilhelm

 

Intersection

Die Schnittmenge (Durchschnittsmenge) zweier Mengen A und B ist die Menge aller Elemente, die sowohl zu A als auch zu B gehören.

#!/usr/bin/perl
use strict;
use warnings;

use Array::Utils qw(:all);

my @list_01 = qw/Hans Otto Fritz/;
my @list_02 = qw/Wilhelm Otto/;

# intersection
my @intersect = intersect(@list_01, @list_02);

print join(", ", @list_01), "\n";
print join(", ", @list_02), "\n";
print join(", ", @intersect), "\n";

Das Programm erzeugt folgende Ausgabe:

Hans, Otto, Fritz
Wilhelm, Otto
Otto

 

Union

Die Vereinigungsmenge zweier Mengen A und B ist die Menge aller Elemente, die zu A oder zu B oder zu beiden Mengen gehören.

#!/usr/bin/perl
use strict;
use warnings;

use Array::Utils qw(:all);

my @list_01 = qw/Hans Otto Fritz/;
my @list_02 = qw/Wilhelm Otto/;

# unique union
my @unique = unique(@list_01, @list_02);

print join(", ", @list_01), "\n";
print join(", ", @list_02), "\n";
print join(", ", @unique), "\n";

Das Programm erzeugt folgende Ausgabe:

Hans, Otto, Fritz
Wilhelm, Otto
Otto, Wilhelm, Hans, Fritz

Durch das Aussortieren der doppelten Elemente, ändert sich auch die Reihenfolge der Elemente im @unique.

 

Subtraktion

Die Subtraktion liefert die Elemente, die nur zu der einen Menge, aber nicht zu der anderen Menge gehören.

#!/usr/bin/perl
use strict;
use warnings;

use Array::Utils qw(:all);

my @list_01 = qw/Hans Otto Fritz/;
my @list_02 = qw/Wilhelm Otto/;

# get items from array @list_01 that are not in array @list_02
my @minus = array_minus(@list_01, @list_02);

print join(", ", @list_01), "\n";
print join(", ", @list_02), "\n";
print join(", ", @minus), "\n";

Das Programm erzeugt folgende Ausgabe:

Hans, Otto, Fritz
Wilhelm, Otto
Hans, Fritz

 

Siehe auch:

 

Bildnachweis

photo credit: myth of homogeneity via photopin (license)

 

Weitere Posts