Neues in der Kategorie 101

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)

 

Slides des Trainings von Dave Cross (Magnum Solutions Ltd) auf dem Londoner Perl Workshop 2013.

Does what it says on the tin. An introduction to Modern Perl programming aimed at programmers who have little or no experience in Perl.

Enjoy.

 

Über dieses Archiv

Diese Seite enthält aktuelle Einträge der Kategorie 101.

Blogs ist die nächste Kategorie.

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.