LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1321|回复: 13

语句 $scalar = %hash 是何语意 ?

[复制链接]
发表于 2004-6-5 16:05:58 | 显示全部楼层 |阅读模式
我们知道, $scalar = @array 的语意是将 @array 内元素的个数赋给 $scalar, 但 $scalar = %hash 的结果却很奇怪, 不知是什么意思. 请教
发表于 2004-6-5 18:49:32 | 显示全部楼层
见骆驼书(中文版)99页。
“返回的值是一个用斜线分隔的已用空间和分配的总空间的值组成的字符串”
 楼主| 发表于 2004-6-5 18:52:54 | 显示全部楼层
谢谢. 骆驼书我只有英文的电子版, 能否告知章节 ?
发表于 2004-6-5 18:57:10 | 显示全部楼层
我只有中文版,是第二章里的“散列”一节
 楼主| 发表于 2004-6-5 18:58:18 | 显示全部楼层
thanx a lot
 楼主| 发表于 2004-6-5 19:01:44 | 显示全部楼层
上当! 好几本骆驼书呢!:p
 楼主| 发表于 2004-6-5 19:04:04 | 显示全部楼层
发表于 2004-6-5 19:04:24 | 显示全部楼层
???
“骆驼书”说的就是一本吧,《Perl语言编程》
还有《Perl语言入门》叫“小骆驼书”
《高级Perl编程》叫“黑豹书”
发表于 2004-6-6 15:28:24 | 显示全部楼层
大家看看以下代码
[PHP]my %hash = ( a => 'sssskk',b => 'sssskk',c => 'sssskk',d => 'sssskk',e => 'sssskk',f => 'sssskk', g => 'kk');

my $what = %hash;
my $hash_ref = \%hash;

print $what;
print "\n";
print $hash_ref;
print "\n";
print ref $hash_ref;[/PHP]

楼上说的都是关于散列表的引用
形式是这样 $hash_ref = \%hash;

而提问是这样

$what = %hash;

呵呵,通过代码,我们运行后可以得到结果是
6/8
HASH(0x1a99a98)
HASH

也就是说 $hast_ref 是一个 散列的引用,它的值是 0x1a99a98 是一个引用地址,这是一个标量

而 $what 打印出来却是 6/8
6 则是 hash 散列表内的个数,而 8 是什么???  我没研究过
发表于 2004-6-6 16:13:37 | 显示全部楼层
后面的8就是%hash当前分配的空间,perl里的散列表分配空间是按:
2^n (n>=3) 分配的,如果增加项数,就可以看到
x/16
x/32
等等的输出。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表