我想找出一种方法来初始化一个散列,而不必经过一个循环。我希望为此使用切片,但似乎没有产生预期的结果。如何在没有循环的情况下初始化散列值?
考虑下面的代码:
#!/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;
显然有些问题。
所以我的问题是:什么是最优雅的方式来初始化散列给出两个数组(键和值)?
谢谢 - 完美! – emx 2010-08-24 12:05:46