hash的的小问题,麻烦高手帮帮忙,谢谢

hash的的小问题,麻烦高手帮帮忙,谢谢

hash的的小问题,麻烦高手帮帮忙,谢谢
my %hash=("ivr,tijin,unicom,nihao,234"=>"3","wap,xcxj,cmcc,nihao,2343"=>"2",……);
我想把hash中的带有“nihao”这个值的key都选出来放到数组里面不知道是否可以办到?麻烦高手指点一下。这个hash中的key有100w到200w的数据量。
磁盘I/O与迭代
建议通过文件 I/O 和 DBMS I/O 来做这样的事情。把 100w/200w 这种规模的数据结构完整地放在 RAM 中本身设计上就是有问题的。应该利用磁盘存储进行周转,并以迭代方式进行处理。

既然这个大 hash 已经在你的 RAM 里了,就用下面的代码来搞定吧:

[quote]
my %hash = (
"ivr,tijin,unicom,nihao,234" => "3",
"wap,xcxj,cmcc,nihao,2343" => "2",
dog => 3,
cat => 6,
nihao => 8
);
my @hit;
while (my ($key, $value) = each %hash) {
if ($key =~ /\bnihao\b/) {
push @hit, $key;
}
}
print join("\n", @hit), "\n";
[/quote]
用DBMS吧.
用DBMS吧
录入数据的时候就应该建反.
录入数据的时候就应该建反向索引,而不是全录完了再生成反向索引。
录入数据的时候就应该建反.?
录入数据的时候就应该建反向索引,而不是全录完了再生成反向索引。什么意思没有太明白。怎么建这个方向索引?
就是说你把数据灌到这个ha.
就是说你把数据灌到这个hash了的时候,就应该同时把你要的数组也灌了。而不是先灌完hash,在从hash生成数组。