Я пытаюсь выяснить способ инициализации хэша без необходимости проходить цикл. Я надеялся использовать для этого срезы, но, похоже, не дает ожидаемых результатов.
Рассмотрим следующий код:
#!/usr/bin/perl
use Data::Dumper;
my %hash = ();
$hash{currency_symbol} = 'BRL';
$hash{currency_name} = 'Real';
print Dumper(%hash);
Это работает как ожидаемое и производит следующий вывод:
$VAR1 = 'currency_symbol';
$VAR2 = 'BRL';
$VAR3 = 'currency_name';
$VAR4 = 'Real';
Когда я пытаюсь использовать срезы следующим образом, это не работает:
#!/usr/bin/perl
use Data::Dumper;
my %hash = ();
my @fields = ('currency_symbol', 'currency_name');
my @array = ('BRL','Real');
@hash{@array} = @fields x @array;
Вывод:
$VAR1 = 'currency_symbol';
$VAR2 = '22';
$VAR3 = 'currency_name';
$VAR4 = undef;
Очевидно, что-то не так.
Итак, мой вопрос: какой самый элегантный способ инициализировать хэш, заданный двумя массивами (ключи и значения)?