小编ike*_*uru的帖子

在迭代时无意中向哈希添加键

我正在迭代一个纬度键散列的缓存,指向经度/城市的键/值对.我试图找到纬度/经度的近似匹配,这些匹配足够接近已经查找过的并且在散列中.

我是这样做的

    foreach my $lat_key ( keys $lookup_cache_latlonhash ) {

        if ( ($lat > ($lat_key - .5)) && ($lat < ($lat_key + .5)) ) {

            foreach my $lon_key ( keys %{ $lookup_cache_latlonhash->{$lat_key}} ) {

                if ( ($lon > ($lon_key - .5)) && ($lon < ($lon_key + .5)) ) {

                    $country = $$lookup_cache_latlonhash{$lat_key}{$lon_key};
                    print "Approx match found: $lat_key $lon_key $country\n";
                    return $country;
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

该代码用于在该范围内找到这些lat/lon对.然而,对于每个纬度,它通过使用循环,当它确实发现它在范围内(第一个嵌套条件)时,它将它添加到哈希(大概keys %{ $goog_lookup_cache_latlonhash->{$lat_key}}),这是不希望的,向哈希添加无用/空键:

$VAR1 = {
      '37.59' => {},
      '37.84' => {},
      '37.86' …
Run Code Online (Sandbox Code Playgroud)

perl hashtable key-value autovivification

4
推荐指数
1
解决办法
134
查看次数

标签 统计

autovivification ×1

hashtable ×1

key-value ×1

perl ×1