Perl print%hash - 需要一些帮助才能理解这一点

时间:2013-12-22 11:19:28

标签: perl

每个简单的Perl代码,但我不明白。

我们走了

#!/usr/bin/env perl
use warnings;
use strict;
my %hash;
$hash{"key"} = "value";
$hash{"key2"} = "value2";
$hash{"key3"} = "value3";
print %hash."\n";

结果为3/8,删除一个kep =>值对,结果为2/8

如果我删除了."\n",那么预期结果为key3value3key2value2keyvalue1

没有理由这样做,注意到这个意外只是试图了解发生了什么。

2 个答案:

答案 0 :(得分:7)

当您将“\ n”附加到哈希时,会强制在标量上下文中插入哈希,这会导致它打印出当前的容量和大小。删除它时,哈希在列表上下文中进行插值,并打印出当前的键/值对。

答案 1 :(得分:3)

虽然Mark已经完全涵盖了这里发生的事情,但是你可以通过使用“say%hash”来获得预期的结果,而不会将哈希强制转换为标量上下文。在从5.10开始的perl版本中。

您需要use feature 'say';,就像use warnings;一样(或者在perl -E下运行,它会启用一些“更新”的功能)