我试图找出一种无需经过循环即可初始化哈希的方法。我希望为此使用切片,但似乎无法产生预期的结果。
考虑以下代码:
#!/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', 'currency_name');
my @array = ('BRL','Real');
# ... Assign to your hash
my %hash;
@hash{@fields} = @array;
关于arrays - 如何在没有循环的情况下初始化哈希值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3556052/