Hash Perl

Un hash estclé/valeurune collection de paires.

En Perl, les variables de hash commencent par un signe pourcent (%).

Format d'accès aux éléments de hash :${key}。

Voici un exemple simple de hash :

Exemple

#!/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";

L'exécution du programme ci-dessus produit la sortie suivante :


Création d'un hash

Un hash peut être créé des deux manières suivantes :

1. Définir une valeur pour chaque clé

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

2. Définir via une liste

Dans la liste, le premier élément est la clé et le second est la valeur.

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

Vous pouvez aussi utiliser=>le symbole pour définir clé/valeur :

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

L'exemple suivant est une variante de ce qui précède, utilisant-pour remplacer les guillemets :

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

En utilisant cette méthode, les clés ne peuvent pas contenir d'espaces. La façon de lire les éléments est :

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

Accès aux éléments du hash

Format d'accès aux éléments du hash :${key}, l'exemple est le suivant :

Exemple

#!/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";

L'exécution du programme ci-dessus produit la sortie suivante :


Lecture des valeurs du hash

Vous pouvez extraire des valeurs d'un hash comme d'un tableau.

Format de syntaxe pour extraire les valeurs du hash dans un tableau :@{key1,key2}。

Exemple

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

L'exécution du programme ci-dessus produit la sortie suivante :

Array : 45 40

Lecture des clés et des valeurs de hachage

Lecture de toutes les clés

Nous pouvons utiliser lakeysfonction pour lire toutes les clés du hachage. Le format de syntaxe est le suivant :

keys %HASH

Cette fonction renvoie un tableau de toutes les clés du hachage.

Exemple

#!/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";

L'exécution du programme ci-dessus produit la sortie suivante :

taobao
google
example

De même, nous pouvons utiliser lavaluesfonction pour lire toutes les valeurs du hachage. Le format de syntaxe est le suivant :

values %HASH

Cette fonction renvoie un tableau de toutes les valeurs du hachage.

Exemple

#!/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";

L'exécution du programme ci-dessus produit la sortie suivante :

taobao.com
example.com
google.com

Vérifier si un élément existe

Si vous lisez une paire clé/valeur inexistante dans un hash, il renvoie une valeurundefined, et un avertissement sera généré lors de l'exécution.

Pour éviter cette situation, nous pouvons utiliser la fonctionexistspour vérifier si la clé existe, et la lire lorsqu'elle existe :

Exemple

#!/usr/bin/perl %data = ('google'=>'google.com', 'example'=>'example.com', 'taobao'=>'taobao.com'); if( exists($data{'facebook'} ) ){ print "L'URL de facebook est$data{'facebook'} \n"; } else { print "La clé facebook n'existe pas\n"; }

L'exécution du programme ci-dessus produit la sortie suivante :

facebook 键不存在

Dans le code ci-dessus, nous avons utilisé l'instructionIF...ELSE, qui sera présentée en détail dans les chapitres suivants.


Obtenir la taille du hash

La taille du hash est le nombre d'éléments. Nous pouvons obtenir la taille du hash en obtenant d'abord un tableau de toutes les clés ou valeurs, puis en comptant le nombre d'éléments du tableau. Un exemple est le suivant :

Exemple

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

L'exécution du programme ci-dessus produit la sortie suivante :

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

Ajout ou suppression d'éléments dans un hash

L'ajout de paires clé/valeur peut se faire par une simple affectation. Cependant, pour supprimer des éléments du hash, vous devez utiliser la fonctiondelete:

Exemple

#!/usr/bin/perl %data = ('google'=>'google.com', 'example'=>'example.com', 'taobao'=>'taobao.com'); @keys = keys %data; $size = @keys; print "1 - Taille du hash :$size\n"; # Ajouter un élément $data{'facebook'} = 'facebook.com'; @keys = keys %data; $size = @keys; print "2 - Taille du hash :$size\n"; # Supprimer des éléments dans le hash delete $data{'taobao'}; @keys = keys %data; $size = @keys; print "3 - Taille du hash :$size\n";

L'exécution du programme ci-dessus produit la sortie suivante :

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

Itération sur un hash

Nous pouvons utiliser foreach et while pour parcourir un hash :

Exemple - Utilisation de foreach

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

Exemple - Utilisation de while

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

L'exécution du programme ci-dessus produit la sortie suivante :

example.com
google.com
taobao.com
Autres extensions