Perl-Hash

Ein Hash istSchlüssel/Werteine Sammlung von Paaren.

In Perl beginnen Hash-Variablen mit einem Prozentzeichen (%).

Format für den Zugriff auf Hash-Elemente:${key}。

Das Folgende ist ein einfaches Hash-Beispiel:

Beispiel

#!/usr/bin/perl %data = ('google', 'google.com', 'example', 'example.com', 'taobao', 'taobao.com'); print "\$data{'google'} = $data{'google'}\n"; print "\$data{'example'} = $data{'example'}\n"; print "\$data{'taobao'} = $data{'taobao'}\n";

Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:


Einen Hash erstellen

Ein Hash kann auf die folgenden zwei Arten erstellt werden:

1. Wert für jeden Schlüssel festlegen

$data{'google'} = 'google.com';
$data{'example'} = 'example.com';
$data{'taobao'} = 'taobao.com';

2. Über eine Liste festlegen

In der Liste ist das erste Element der Schlüssel und das zweite der Wert.

%data = ('google', 'google.com', 'example', 'example.com', 'taobao', 'taobao.com');

Sie können auch=>das Symbol verwenden, um Schlüssel/Wert festzulegen:

%data = ('google'=>'google.com', 'example'=>'example.com', 'taobao'=>'taobao.com');

Das folgende Beispiel ist eine Variante des obigen und verwendet-, um Anführungszeichen zu ersetzen:

%data = (-google=>'google.com', -example=>'example.com', -taobao=>'taobao.com');

Bei dieser Methode dürfen Schlüssel keine Leerzeichen enthalten. Die Art, Elemente zu lesen, ist:

$val = $data{-google}
$val = $data{-example}

Zugriff auf Hash-Elemente

Format für den Zugriff auf Hash-Elemente:${key}, das Beispiel ist wie folgt:

Beispiel

#!/usr/bin/perl %data = ('google'=>'google.com', 'example'=>'example.com', 'taobao'=>'taobao.com'); print "\$data{'google'} = $data{'google'}\n"; print "\$data{'example'} = $data{'example'}\n"; print "\$data{'taobao'} = $data{'taobao'}\n";

Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:


Hash-Werte lesen

Sie können Werte aus einem Hash extrahieren, genau wie aus einem Array.

Syntaxformat zum Extrahieren von Hash-Werten in ein Array:@{key1,key2}。

Beispiel

#!/uer/bin/perl %data = (-taobao => 45, -google => 30, -example => 40); @array = @data{-taobao, -example}; print "Array : @array\n";

Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:

Array : 45 40

Hash-Schlüssel und -Werte lesen

Alle Schlüssel lesen

Wir können diekeysFunktion verwenden, um alle Schlüssel des Hashes zu lesen. Das Syntaxformat ist wie folgt:

keys %HASH

Diese Funktion gibt ein Array aller Schlüssel des Hashes zurück.

Beispiel

#!/usr/bin/perl %data = ('google'=>'google.com', 'example'=>'example.com', 'taobao'=>'taobao.com'); @names = keys %data; print "$names[0]\n"; print "$names[1]\n"; print "$names[2]\n";

Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:

taobao
google
example

Ähnlich können wir dievaluesFunktion verwenden, um alle Werte des Hashes zu lesen. Das Syntaxformat ist wie folgt:

values %HASH

Diese Funktion gibt ein Array aller Werte des Hashes zurück.

Beispiel

#!/usr/bin/perl %data = ('google'=>'google.com', 'example'=>'example.com', 'taobao'=>'taobao.com'); @urls = values %data; print "$urls[0]\n"; print "$urls[1]\n"; print "$urls[2]\n";

Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:

taobao.com
example.com
google.com

Prüfen, ob ein Element existiert

Wenn Sie ein nicht vorhandenes Schlüssel-Wert-Paar in einem Hash lesen, gibt es einenundefinedWert zurück, und während der Ausführung wird eine Warnung erzeugt.

Um diese Situation zu vermeiden, können wir dieexists-Funktion verwenden, um zu prüfen, ob der Schlüssel existiert, und ihn lesen, wenn er existiert:

Beispiel

#!/usr/bin/perl %data = ('google'=>'google.com', 'example'=>'example.com', 'taobao'=>'taobao.com'); if( exists($data{'facebook'} ) ){ print "Die URL von facebook ist$data{'facebook'} \n"; } else { print "Der facebook-Schlüssel existiert nicht\n"; }

Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:

facebook 键不存在

Im obigen Code haben wir dieIF...ELSE-Anweisung verwendet, die in späteren Kapiteln ausführlich vorgestellt wird.


Ermitteln der Hash-Größe

Die Hash-Größe ist die Anzahl der Elemente. Wir können die Hash-Größe ermitteln, indem wir zuerst ein Array aller Schlüssel oder Werte abrufen und dann die Anzahl der Array-Elemente zählen. Ein Beispiel ist wie folgt:

Beispiel

#!/usr/bin/perl %data = ('google'=>'google.com', 'example'=>'example.com', 'taobao'=>'taobao.com'); @keys = keys %data; $size = @keys; print "1 - Hash-Größe:$size\n"; @values = values %data; $size = @values; print "2 - Hash-Größe:$size\n";

Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:

1 - 哈希大小: 3
2 - 哈希大小: 3

Hinzufügen oder Löschen von Elementen in einem Hash

Das Hinzufügen von Schlüssel/Wert-Paaren kann durch einfache Zuweisung erfolgen. Um Hash-Elemente zu löschen, müssen Sie jedoch diedelete-Funktion verwenden:

Beispiel

#!/usr/bin/perl %data = ('google'=>'google.com', 'example'=>'example.com', 'taobao'=>'taobao.com'); @keys = keys %data; $size = @keys; print "1 - Hash-Größe:$size\n"; # Element hinzufügen $data{'facebook'} = 'facebook.com'; @keys = keys %data; $size = @keys; print "2 - Hash-Größe:$size\n"; # Elemente im Hash löschen delete $data{'taobao'}; @keys = keys %data; $size = @keys; print "3 - Hash-Größe:$size\n";

Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:

1 - 哈希大小: 3
2 - 哈希大小: 4
3 - 哈希大小: 3

Iteration über einen Hash

Wir können foreach und while verwenden, um über einen Hash zu iterieren:

Beispiel - Verwendung von foreach

#!/usr/bin/perl %data = ('google'=>'google.com', 'example'=>'example.com', 'taobao'=>'taobao.com'); foreach $key (keys %data){ print "$data{$key}\n"; }

Beispiel - Verwendung von while

#!/usr/bin/perl %data = ('google'=>'google.com', 'example'=>'example.com', 'taobao'=>'taobao.com'); while(($key, $value) = each(%data)){ print "$data{$key}\n"; }

Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:

example.com
google.com
taobao.com
Andere Erweiterungen