每个简单的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
没有理由这样做,注意到这个意外只是试图了解发生了什么。
答案 0 :(得分:7)
当您将“\ n”附加到哈希时,会强制在标量上下文中插入哈希,这会导致它打印出当前的容量和大小。删除它时,哈希在列表上下文中进行插值,并打印出当前的键/值对。
答案 1 :(得分:3)
虽然Mark已经完全涵盖了这里发生的事情,但是你可以通过使用“say%hash”来获得预期的结果,而不会将哈希强制转换为标量上下文。在从5.10开始的perl版本中。
您需要use feature 'say';
,就像use warnings;
一样(或者在perl -E下运行,它会启用一些“更新”的功能)