Comment imprimer le hachage en Perl

Dans le langage de programmation Perl, il est parfois nécessaire d'imprimer le contenu de hachage.

Par exemple, il y a de hachage %h avec le contenu suivant:

my %h = (
    John => 'red',
    Alice => 'silver',
    Bob => 'yellow',
);

En fonction de ce que vous souhaitez, il ya plusieurs façons que vous pouvez imprimer le hachage.

L'utilisation de Data::Dumper

Dans ce cas, si vous avez besoin rapidement de voir que contient le hachage, pour cela pratique pour utiliser le module de Data::Dumper. Cela peut être utile dans le processus de développement ou de déboguer le programme.

Voici un exemple de code:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my %h = (
    John => 'red',
    Alice => 'silver',
    Bob => 'yellow',
);

print Dumper \%h;

Voici ce qu'affiche ce programme:

$VAR1 = {
          'Bob' => 'yellow',
          'Alice' => 'silver',
          'John' => 'red'
        };

Le hachage de conserve en soi n'est pas ordonnée, des paires de valeurs. Différents programmes de démarrage va sortir une paire dans le même ordre.

L'utilisation de print

Et si tout simplement passer le hachage en print?

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my %h = (
    John => 'red',
    Alice => 'silver',
    Bob => 'yellow',
);

print %h;

Le programme affiche une ligne de la forme:

JohnredBobyellowAlicesilver

On voit que dans ce cas print a sur l'écran ensemble de toutes les paires de clé / valeur de hachage. Le hachage de conserve en soi n'est pas ordonnée, des paires de valeurs. Les différents lancements de programmes de délivrer conclusion différente.

print et la variable $,

Si il suffit de spécifier print %h;, il imprime toutes les paires clé-valeur de l'ensemble. Vous pouvez demander à perl d'insérer un symbole entre les éléments. Par exemple, le caractère de nouvelle ligne \n.

Pour ce faire, vous devez placer ce caractère dans la variable spéciale $,. Voici le code:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my %h = (
    John => 'red',
    Alice => 'silver',
    Bob => 'yellow',
);

$, = "\n";

print %h;

L'un des résultats possibles de fonctionnement du programme (données hachage ne sont pas classés par conséquent, les différents lancements vont sortir une paire dans le même ordre):

Bob
yellow
Alice
silver
John
red

Mais de cette manière vous devez utiliser avec précaution. La variable $, — global. Si vous changez, il change pour l'ensemble du programme. Dans certaines situations a du sens ou de ne pas utiliser cette méthode, soit de conserver la valeur de cette variable dans une variable temporaire, et après print de ramener la valeur par exemple, ainsi:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my %h = (
    John => 'red',
    Alice => 'silver',
    Bob => 'yellow',
);

my $saved = $,;

$, = "\n";

print %h;

$, = $saved;

Itération de хешу

Le plus puissant et flexible de façon à la manière d'afficher le contenu de hachage d'écran parcourir toutes les valeurs de hachage et de l'afficher sur l'écran comme vous le souhaitez. Voici un exemple de comment vous pouvez le faire:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use feature qw(say);

my %h = (
    John => 'red',
    Alice => 'silver',
    Bob => 'yellow',
);

foreach my $name (sort keys %h) {
    say "$name $h{$name}";
}

La sortie du programme est toujours le même:

Alice silver
Bob yellow
John red

Pour des paires de valeurs dans le hachage de l'ordre indéfini, mais dans ce programme, utilisez le sort pour pour afficher les clés dans l'ordre alphabétique.

Thèmes connexes

Autres articles