So drucken Sie den Hash in Perl

In der Programmiersprache Perl gelegentlich müssen Sie den Inhalt des Hash.

Zum Beispiel gibt es Hash %h mit folgendem Inhalt:

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

Je nachdem was Sie benötigen, gibt es mehrere verschiedene Möglichkeiten, wie Sie können drucken Hash.

Verwendung Data::Dumper

Wenn Sie brauchen, um schnell zu sehen, dass finden Sie in хеше, dann bequem zu bedienen-Modul Data::Dumper. Es kann nützlich sein im Laufe der Entwicklung oder dem Debuggen des Programms.

Hier ist der Beispielcode:

▶ Run
#!/usr/bin/perl

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

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

print Dumper \%h;

Das ist, was dir dieses Programm:

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

Hash hält nicht geordnete Wertepaare. Verschiedene Programm starten ausgegeben Paare in unterschiedlicher Reihenfolge.

Verwendung print

Und was wird nur passieren wenn der Hash in print?

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

print %h;

Das Programm zeigt eine Zeile der Art:

JohnredBobyellowAlicesilver

Ist ersichtlich, dass in diesem Fall print zusammen auf die Leinwand brachte alle Schlüssel-Wert-Paare aus einem Hash. Hash hält nicht geordnete Wertepaare. Verschiedene Starts des Programms ausgeben werden unterschiedliche Ausgabe.

print und die Variable $,

Wenn Sie nur angeben print %h;, dann druckt es alle Schlüssel-Wert-Paare zusammen. Sie können Fragen, perl einfügen irgendein Zeichen zwischen den Elementen. Zum Beispiel zeilenendemarke \n.

Dazu müssen Sie dieses Symbol in einer speziellen Variable $,. Hier ist der Code:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

$, = "\n";

print %h;

Eines der möglichen Ergebnisse der Arbeit des Programms (Daten in хеше nicht sortiert, deshalb verschiedene Starts ausgegeben werden Paare in unterschiedlicher Reihenfolge):

Bob
yellow
Alice
silver
John
red

Aber diese Methode sollte mit bedacht eingesetzt werden. Variable $, — Global. Wenn Sie ändern es ändert sich für das gesamte Programm. In manchen Situationen sinnvoll oder überhaupt nicht verwenden diese Methode, oder speichern Sie den Wert dieser Variablen in einer temporären Variablen, und nach print wieder in Ihren Wert zum Beispiel so:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

my $saved = $,;

$, = "\n";

print %h;

$, = $saved;

Iteration nach хешу

Die leistungsstarke und flexible Möglichkeit, wie man den Inhalt der Hash-Wert auf dem Bildschirm ist gehen alle Werte in хеше und bringen auf dem Bildschirm in der Form, wie gebraucht. Hier ist ein Beispiel wie es gemacht werden kann:

▶ 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}";
}

Die Ausgabe des Programms ist immer die gleiche:

Alice silver
Bob yellow
John red

Für die Wertepaare in хеше die Reihenfolge undefiniert, aber in diesem Programm verwendet sort , um um die Tasten in alphabetischer Reihenfolge.

Verwandte Themen

Andere Artikel