2010-07-29 94 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; 
     } 
    } 
} 



正如吉姆·戴維斯說,你有安數組引用。 此外,一些括號錯誤,沒有什麼大不了