上 一篇文章《Perl5 Hash数组(数组元素是Hans结构)》中遇到了一个Hash数组定义的问题
1、创建Hash数组定义源代码
#!/usr/bin/perl #################################################################################### ## 创建Hash数组定义 ## 编写:高增光 ## 日期:2011.09.16北京 ## 功能:测试脚本 ## 脚本说明: ###------------------------------------------------------------------ my @array_attributeObjs = make_hash_array(); #print "数组的长度:".@attributeObjs_array."\n"; my $num = 0; foreach $hash_obj (@array_attributeObjs) { $num++; print "数组外部->第$num个元素:".$hash_obj->{"attributecnname"}."\n"; } ### 函数名称: make_hash_array ### 函数功能: 创建Hash数组 ### 输入参数: ### 输出参数: 无 ### 返回 值: ### 说 明: ###------------------------------------------------------------------ sub make_hash_array() { #定义一个数组 my @array_attributeObjs=(); for ($count=0; $count <= 2; $count++) { $hash_obj->{"resattributeid"} = $count; $hash_obj->{"attributecnname"} = "新的Hash_$count"; push(@array_attributeObjs,$hash_obj); print "数组内部->第$num个元素:".$array_attributeObjs[$count]->{"attributecnname"}."\n"; } return @array_attributeObjs; }
2、创建Hash数组定义--运行结果
数组内部->第个元素:新的Hash_0 数组内部->第个元素:新的Hash_1 数组内部->第个元素:新的Hash_2 数组外部->第1个元素:新的Hash_2 数组外部->第2个元素:新的Hash_2 数组外部->第3个元素:新的Hash_2
3、咱们可以发现 在循环中是,数组取得的Hash值是正确的,但是一旦跳出循环则始终取得的是最后一次定义的Hash值。上一篇文章通过定义N个Hash表,然后把这N个Hash表插入到数组中。可以规避这个问题,但是不是最终解决办法?
希望可以跟大家探讨一下 如何解决?