Cara mencetak hash di Perl

Dalam bahasa pemrograman Perl kadang-kadang diperlukan untuk mencetak konten dari hash.

Misalnya, ada hash %h dengan konten berikut:

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

Tergantung pada apa yang anda inginkan, ada beberapa cara yang berbeda untuk mencetak hash.

Gunakan Data::Dumper

Jika anda perlu untuk cepat melihat apa yang terkandung di hash, maka ini hal ini mudah untuk menggunakan modul Data::Dumper. Hal ini dapat berguna dalam proses mengembangkan atau debugging program.

Berikut adalah contoh kode:

▶ Run
#!/usr/bin/perl

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

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

print Dumper \%h;

Itulah yang akan mengambil program ini:

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

Hash toko tidak memerintahkan pasangan nilai-nilai. Berbagai program startup akan output pasangan dalam urutan yang berbeda.

Gunakan print

Apa yang terjadi jika anda baru lulus hash di print?

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

print %h;

Program ini menampilkan satu baris dari bentuk:

JohnredBobyellowAlicesilver

Hal ini jelas bahwa dalam kasus ini print dibawa ke layar bersama-sama semua pasangan kunci-nilai hash. Hash toko tidak memerintahkan pasangan nilai-nilai. Berbeda menjalankan program akan memberikan output yang berbeda.

print dan variabel $,

Jika anda hanya menentukan print %h;, itu akan mencetak semua kunci dan nilai bersama-sama. Anda dapat meminta perl untuk menyisipkan simbol antara unsur-unsur. Misalnya, karakter baris baru \n.

Untuk ini, anda perlu untuk menempatkan simbol ini di khusus variabel $,. Berikut ini adalah kode:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

$, = "\n";

print %h;

Salah satu kemungkinan hasil dari program ini (data di hash tidak memerintahkan, agar berbeda berjalan akan menampilkan pasangan dalam urutan yang berbeda):

Bob
yellow
Alice
silver
John
red

Namun metode ini harus digunakan dengan hati-hati. Variabel $, — global. Jika apakah anda mengubah itu perubahan, perubahan untuk seluruh program. Dalam beberapa situasi akal untuk tidak menggunakan metode ini, baik untuk menyimpan nilai variabel ini dalam suatu variabel sementara, dan kemudian print untuk mengembalikan nilai di dalamnya, misalnya, dengan demikian:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

my $saved = $,;

$, = "\n";

print %h;

$, = $saved;

Iterasi hash

Yang paling kuat dan fleksibel cara untuk output konten hash pada layar pergi melalui semua nilai hash dan mencetak layar sesuai kebutuhan. Berikut adalah salah satu contoh bagaimana hal ini dapat dilakukan dengan:

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

Output dari program ini adalah selalu sama:

Alice silver
Bob yellow
John red

Untuk pasangan nilai dalam hash agar tidak terdefinisi, tapi program ini menggunakan sortorder untuk menampilkan tombol dalam urutan abjad.

Topik terkait

Artikel lainnya