ループを通過せずにハッシュを初期化する方法を見つけようとしています。そのためにスライスを使用したいと思っていましたが、期待した結果が得られないようです。
次のコードを検討してください。
#!/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;
明らかに何かが間違っています。
だから私の質問は次のようになります: 2 つの配列 (キーと値) を指定してハッシュを初期化する最もエレガントな方法は何ですか?