Как инициализировать значения в хэше без цикла?

Я пытаюсь найти способ инициализации хэша без необходимости проходить через цикл. Я надеялся использовать для этого ломтики, но, похоже, это не дает ожидаемых результатов.

Рассмотрим следующий код:

#!/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;

Там явно что-то не так.

Поэтому мой вопрос будет таким: каков самый элегантный способ инициализации хэша, заданного двумя массивами (ключами и значениями)?

Ответы на вопрос(4)

Ваш ответ на вопрос