Как решить проблему с хэш-массивом - PullRequest
0 голосов
/ 29 июля 2010
  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;}  
        }
    }

Я пытался его не работает

Ответы [ 2 ]

4 голосов
/ 29 июля 2010

$geo_location_map{US} содержит ссылку на массив; если вы хотите скопировать массив в @glocation, вам нужно разыменовать его:

my @glocation = @{$geo_location_map{US}};
1 голос
/ 29 июля 2010

Прежде всего, всегда «используйте строгий» в ваших скриптах.У вас было несколько ошибок.см .:


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Более того, некоторые ошибки в скобках, ничего страшного

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...