2014-12-09 2 views
0

Если бы я писалинициализационные массива хэшей в Perl

my %modules = (
Paths => ["$path","$other_path"] 
); 

я могу получить доступ через

print $modules{Paths}[1]; 

но я инициализировать его как

my @rray = ("$path", "$other_path"); 
my %modules = (Paths => @rray); 

, но тогда она не работает с

print $modules{Paths}[1]; 

что мне делать?

ответ

2

Вам нужна ссылка на массив @rray.

my %modules = (Paths => \@rray); 

Вы можете проверить perldoc perlreftut и perldoc perldsc

my @rray = ("$path", "$other_path"); 
my %modules = (Paths => @rray); 

результаты в уплощенной список пар ключ/значение,

my %modules = ("Paths", "$path", "$other_path"); 
#    key1  value1 key2 

, который в данном случае будет предупреждать Odd number of elements in hash assignment под предупреждениями.

+0

Да, это работает ... почему? – alabamajack

+0

@alabamajack проверка обновление. –

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