[("Hola", "Que pasa?")], ); my %bighash = ( "> [("Hola", "Que pasa?")], ); my %bighash = ( "> [("Hola", "Que pasa?")], ); my %bighash = ( " />
Я намагаюся отримати доступ до деяких списків, які складаються з двох глибин у хеш. Ось мій код:
my %english = ( greetings => [("Hello", "What's up?")], ); my %spanish = ( greetings => [("Hola", "Que pasa?")], ); my %bighash = ( english => %english, spanish => %spanish, ); print 'English greetings: '; if (my $array = $bighash{'english'}{'greetings'}) { print "\n$_" for @$array } else { print 'Fail.'; }
Однак умова if завжди визначається як "false". Чому це?
if
Вирази
english => %english, spanish => %spanish,
не є правильними, оскільки значення хешу має бути скалярним (наприклад, довідкою хешу), а не хешем. Спробуйте
english => \%english, spanish => \%spanish,
або
english => { %english }, spanish => { %spanish },
замість цього.
{%}