Como inicializo valores em um hash sem um loop?

Estou tentando descobrir uma maneira de inicializar um hash sem ter que passar por um loop. Eu esperava usar fatias para isso, mas não parece produzir os resultados esperados.

Considere o seguinte código:

#!/usr/bin/perl
use Data::Dumper;

my %hash = ();
$hash{currency_symbol} = 'BRL';
$hash{currency_name} = 'Real';
print Dumper(%hash);

Isso funciona como esperado e produz a seguinte saída:

$VAR1 = 'currency_symbol';
$VAR2 = 'BRL';
$VAR3 = 'currency_name';
$VAR4 = 'Real';

Quando tento usar fatias da seguinte forma, não funciona:

#!/usr/bin/perl
use Data::Dumper;

my %hash = ();
my @fields = ('currency_symbol', 'currency_name');
my @array = ('BRL','Real');
@hash{@array} = @fields x @array;

A saída é:

$VAR1 = 'currency_symbol';
$VAR2 = '22';
$VAR3 = 'currency_name';
$VAR4 = undef;

Obviamente, há algo errado.

Então, minha pergunta seria: qual é a maneira mais elegante de inicializar um hash com duas matrizes (as chaves e os valores)?

questionAnswers(4)

yourAnswerToTheQuestion