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)

 

matrix_medium_6886658738.jpg

WWW::IP - Returns your ip address with failsafe mechanism von David Farrell ermittelt die eigene öffentliche IP-Adresse.

Beispiel

#!/usr/bin/perl
use strict;
use warnings;
use WWW::IP;

my $ip = get_ip();

print "IP: $ip\n";

Ausgabe des Beispielprogramms:

IP: 79.232.98.21

Failsafe

Um Ausfallsicherheit zu erreichen, fragt WWW::IP nacheinander bis zu drei verschiedene Dienste (Webservices), für die entsprechende Perl Module zur Verfügung stehen, ab:

Der erste Treffer gewinnt, die anderen Dienste werden dann nicht mehr abgefragt.

 

WWW::curlmyip

WWW::curlmyip von David Farrell nutzt http://curlmyip.com/ um die öffentliche IP-Adresse zu ermitteln.

Beispiel

#!/usr/bin/perl
use strict;
use warnings;
use WWW::curlmyip;

my $ip = get_ip();

print "IP: $ip\n";

Ausgabe des Beispielprogramms:

IP: 79.232.98.21

 

WWW::hmaip

WWW::hmaip von David Farrell nutzt http://geoip.hidemyass.com/ip/ um die öffentliche IP-Adresse zu ermitteln.

Beispiel

#!/usr/bin/perl
use strict;
use warnings;
use WWW::hmaip;

my $ip = get_ip();

print "IP: $ip\n";

Ausgabe des Beispielprogramms:

IP: 79.232.98.21

 

WWW::ipinfo

WWW::ipinfo von David Farrell nutzt http://ipinfo.io/ um die öffentliche IP-Adresse zu ermitteln. Weiterhin können Geolocation Daten zu der IP-Adresse abgefragt werden.

Die Funktion get_ipinfo() liefert eine Referenz auf einen Hash mit der IP Adresse und den Geolocation Daten zurück.

Beispiel

#!/usr/bin/perl
use strict;
use warnings;
use WWW::ipinfo;

my $ipinfo = get_ipinfo();

my @ipinfo_keys = qw/ip hostname city region country loc org postal/;

foreach my $ipinfo_key (@ipinfo_keys) {
    $ipinfo->{$ipinfo_key} = 'unknown' unless $ipinfo->{$ipinfo_key};
    print "$ipinfo_key: $ipinfo->{$ipinfo_key}\n";
}

Ausgabe des Beispielprogramms:

ip: 79.232.98.21
hostname: p4FE86215.dip0.t-ipconnect.de
city: Leimbach
region: Hessen
country: DE
loc: 50.7500,9.7833
org: AS3320 Deutsche Telekom AG
postal: unknown

Der Funktion get_ipinfo() kann auch eine IPv4 oder IPv6 Adresse als Parameter übergeben werden, dann werden die Geolocation Daten für die angegebene IP zurückgeliefert.

 

Siehe auch:

 

Bildnachweis

phsymyst via photopin cc

 

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.