如何打印的散列在Perl

在Perl编程语言有时是必要的打印内容的散列。

例如,有一个哈希 %h 以下内容:

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

根据你想要什么,有几个不同的方式 打印的散列。

使用 Data::Dumper

如果你需要迅速看到什么是包含在哈,那么这个 这是方便使用模块 Data::Dumper. 这可能是有用的 在制订或者调试一个程序。

这里是一个例子码:

▶ Run
#!/usr/bin/perl

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

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

print Dumper \%h;

那是什么会采取这样的程序:

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

哈希存储没有下令对数值。 不同的启动程序 将输出的对在一个不同的顺序。

使用 print

会发生什么,如果你只是通过散列在 print?

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

print %h;

该程序显示一线的形式:

JohnredBobyellowAlicesilver

显而易见的是,在这种情况下 print 带到屏幕上的所有对关键价值的散列。 哈希存储没有下令对数值。 不同的运行程序将得到不同的输出。

print 和变 $,

如果你只是指定 print %h;,它将打印的所有关键的和价值在一起。 你可以问perl插入一个符号之间的元素。 例如, 新的行符 \n.

为这个你需要把这个符号在一个特殊的可变 $,. 这里是代码:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

$, = "\n";

print %h;

一个可能的结果的程序(数据的散列不是下令,所以 不同的运行将输出的对不同的顺序):

Bob
yellow
Alice
silver
John
red

但是这种方法需要采用谨慎。 变 $, —全球性的。 如果 是你改变它的变化,它改变了整个程序。 在一些情况 讲得不到使用这种方法,无论是储存价值 这个变量在临时变量,然后 print 返回的价值, 例如,因此:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

my $saved = $,;

$, = "\n";

print %h;

$, = $saved;

迭代过散列

最强大和灵活的方式输出的内容的散列在屏幕上 通过所有数值在哈希并打印出来的屏幕作必要的。 这里的一个实例是如何可以做到:

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

输出的计划总是相同的:

Alice silver
Bob yellow
John red

对于价值,对在哈希秩序是不确定的,但这个程序使用 sort了 显示按键按字母顺序排列。

相关的主题

其他文章