Februar 2015 Archive

/2015/02/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)

 

Über dieses Archiv

Diese Seite enthält alle Einträge von Perl HowTo von neu nach alt.

Dezember 2014 ist das vorherige Archiv.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.

Blog Roll

Powered by

Powered by Movable Type 5.2.10

Creative Commons-Lizenz

Creative Commons License
Dieses Weblog steht unter einer Creative Commons-Lizenz.