Làm thế nào để in một băm Perl

Trong ngôn ngữ lập trình Perl là đôi khi cần thiết để in các nội dung của băm.

Ví dụ như, có một băm %h với các nội dung sau đây:

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

Tùy thuộc vào những gì bạn muốn có một vài cách khác nhau để in băm.

Sử dụng Data::Dumper

Nếu bạn cần phải nhanh chóng nhìn thấy những gì được chứa trong băm, sau đó điều này nó là thuận tiện để sử dụng module Data::Dumper. Điều này có thể có ích trong quá trình phát triển hay lỗi một chương trình.

Đây là một ví dụ mã:

▶ Run
#!/usr/bin/perl

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

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

print Dumper \%h;

Đó là những gì sẽ mất chương trình này:

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

Băm cửa hàng không ra lệnh cặp giá trị. Khác nhau chương trình khởi động sẽ ra những cặp khác.

Sử dụng print

Điều gì xảy ra nếu bạn chỉ cần vượt qua băm trong print?

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

print %h;

Chương trình hiển thị một dòng của các hình thức:

JohnredBobyellowAlicesilver

Đó là điều hiển nhiên mà trong trường hợp này print đưa đến màn hình lại tất cả các cặp giá trị quan trọng của băm. Băm cửa hàng không ra lệnh cặp giá trị. Chạy khác nhau của chương trình sẽ cung cấp khác nhau ra.

print và biến $,

Nếu bạn chỉ cần xác định print %h;, nó sẽ in tất cả chìa khóa và giá trị với nhau. Bạn có thể yêu cầu perl để chèn một biểu tượng giữa các yếu tố. Ví dụ, các dòng mới nhân vật \n.

Này, bạn cần phải đặt biểu tượng này trong một đặc biệt biến $,. Đây là mã:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

$, = "\n";

print %h;

Một trong những kết quả có thể của chương trình (các dữ liệu ở các băm không được ra lệnh, vậy khác nhau chạy sẽ ra những cặp khác để):

Bob
yellow
Alice
silver
John
red

Nhưng phương pháp này cần phải sử dụng một cách cẩn thận. Biến $, — toàn cầu. Nếu bạn có thay đổi nó thay đổi, nó sẽ thay đổi toàn bộ chương trình. Trong một số tình huống có ý nghĩa không sử dụng phương pháp này, hoặc là để lưu trữ các giá trị biến này trong một biến tạm thời, và sau đó print trở lại giá trị trong đó, ví dụ, như vậy:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

my $saved = $,;

$, = "\n";

print %h;

$, = $saved;

Lặp lại trên băm

Một cách để ra các nội dung của băm trên màn hình đi qua tất cả những giá trị trong băm và in ra màn hình như cần thiết. Đây là một ví dụ về điều này có thể được thực hiện:

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

Đầu của chương trình này là luôn luôn giống nhau:

Alice silver
Bob yellow
John red

Cho cặp giá trị trong băm lệnh là không xác định, nhưng chương trình này sử dụng sorttrật tự hiển thị các phím theo thứ tự chữ cái.

Chủ đề liên quan

Các bài viết khác