2010-07-29 3 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

Просьба уточнить, что такое «не работает». Что происходит, и что вы хотите? Кроме того, вы должны * всегда * 'использовать strict; используйте предупреждения, 'в ваших сценариях, если вы хотите, чтобы у вас были ошибки отчета perl. – Ether

ответ

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; 
     } 
    } 
} 



Как сказал Джим Дэвис, вы имели ANN массив реф. Кроме того, некоторые ошибки в скобках, без больших затрат

Смежные вопросы