Wie initialisiere ich Werte in einem Hash ohne Schleife?

Ich versuche, einen Weg zu finden, um einen Hash zu initialisieren, ohne eine Schleife durchlaufen zu müssen. Ich hatte gehofft, dafür Scheiben zu verwenden, aber es scheint nicht die erwarteten Ergebnisse zu liefern.

Betrachten Sie den folgenden Code:

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

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

Dies funktioniert wie erwartet und erzeugt die folgende Ausgabe:

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

Wenn ich versuche, Slices wie folgt zu verwenden, funktioniert das nicht:

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

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

Die Ausgabe ist:

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

Es stimmt offensichtlich etwas nicht.

So meine Frage wäre: Was ist die eleganteste Art, einen Hash zu initialisieren, wenn zwei Arrays (die Schlüssel und die Werte) gegeben sind?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage