我想知道下面的代码为什么输出“2/8”。
#!/usr/bin/perl
#use strict;
#use warnings;
%a = ('a'=>'dfsd','b'=>'fdsfds');
print %a."\n";
#!/usr/bin/perl
#use strict;
#use warnings;
%a = ('a'=>'dfsd','b'=>'fdsfds');
print %a."\n";
2/8
表示在分配的8个桶中,2个被触及。考虑到您仅插入了2个值,它目前表现良好 :)print %a;
来打印其内容。2/8
的用处非常少,因此有人提议将其更改为与 !!%a
相同。 - Brad Gilbert如@Dark所述,您正在标量上下文中打印哈希。
如果您真的想打印一个哈希表,则使用Data::Dumper模块。
use Data::Dumper;
...
...
print Dumper(%a);
例如:
use Data::Dumper;
my %hash = ( key1 => 'value1', key2 => 'value2' );
print Dumper(%hash); # okay, but not great
print "or\n";
print Dumper(\%hash); # much better
输出结果:
$VAR1 = 'key2';
$VAR2 = 'value2';
$VAR3 = 'key1';
$VAR4 = 'value1';
or
$VAR1 = {
'key2' => 'value2',
'key1' => 'value1'
};