我试图找出一种初始化哈希的方法,而不必经历一个循环。我希望使用切片,但似乎没有产生预期的结果。
请考虑以下代码:
#!/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;
显然有问题。
所以我的问题是:给定两个数组(键和值)初始化哈希值的最优雅的方式是什么?
解决方法
use strict; use warnings; # Must-haves # ... Initialize your arrays my @fields = ('currency_symbol','Real'); # ... Assign to your hash my %hash; @hash{@fields} = @array;