2010-07-29 50 views
0
my %geo_location_map = (
          US => [ 'US', 'CA' ], 
          EU => [ 'GB', 'ES' ], 

          ); 
    $location= "US" ; 
    my $goahead = 0; 

    if (exists $geo_location_map{US}) { 
    print "exists"; 
     my @glocation = $geo_location_map{US}; 

    foreach @glocation { 
     if ($_ eq "$location"} { $goahead=1; last;} 
     } 
    } 

我想它不工作如何解决阵列哈希问题

+0

请更加具体地说明什么是“不工作”。会发生什么,与你想要发生什么?此外,你必须*总是*'使用严格;使用警告;'在你的脚本中,如果你想让perl向你报告错误。 – Ether 2010-07-29 16:14:10

回答

4

$geo_location_map{US}包含数组引用;如果你想在阵列复制到@glocation你需要取消对它的引用:

所有的
my @glocation = @{$geo_location_map{US}}; 
1

首先,在你的脚本总是“使用严格”。 您有多个错误。 看到:


my %geo_location_map = (
    US => [ 'US', 'CA' ], 
    EU => [ 'GB', 'ES' ], 
); 
my $location= "US" ; 
my $goahead = 0; 

if (exists $geo_location_map{US}) { 
    print "exists"; 
    my @glocation = $geo_location_map{US}; 

    foreach (@glocation) { 

     if ($_->[0] eq "$location") { 
      print "ahead\n"; 
         $goahead=1; 
      last; 
     } 
    } 
} 



正如吉姆·戴维斯说,你有安数组引用。 此外,一些括号错误,没有什么大不了