perl - 是否可以将键值对直接推送到 perl 中的散列?
问题描述
我知道push
ing 只能传递给数组,而不是哈希。但是允许直接将键值对推送到散列会更方便(我仍然很惊讶在 perl 中这是不可能的)。我有一个例子:
#!/usr/bin/perl -w
#superior words begin first, example of that word follow
my @ar = qw[Animals,dog Money,pound Jobs,doctor Food];
my %hash;
my $bool = 1;
sub marine{
my $ar = shift if $bool;
for(@$ar){
my @ar2 = split /,/, $_;
push %hash, ($ar2[0] => $ar2[1]);
}
}
marine(\@ar);
print "$_\n" for keys %hash;
这里我有一个数组,它有两个用,
逗号分开的单词。我想从中创建一个哈希,使第一个成为键,第二个成为值(如果它缺少值,就像最后一个Food
词一样,那么根本没有值-> 只是 undef。如何使它珀尔?
输出:
Possible attempt to separate words with commas at ./a line 4.
Experimental push on scalar is now forbidden at ./a line 12, near ");"
Execution of ./a aborted due to compilation errors.
解决方案
我可能在这里过于简单化了,但为什么不简单地分配给哈希而不是试图推入它呢?
也就是说,替换这个不受支持的表达式:
push %hash, ($ar2[0] => $ar2[1]);
和:
$hash{$ar2[0]} = $ar2[1];
如果我将它包含在您的代码中,然后在最后转储生成的哈希,我会得到:
$VAR1 = {
'Food' => undef,
'Money' => 'pound',
'Animals' => 'dog',
'Jobs' => 'doctor'
};
推荐阅读
- javascript - CSS动画无尽的水平滚动 - 鼠标悬停暂停
- go-cd - 在 Windows 的 GoCD 管道中添加材料时面临 SSL 证书问题错误
- xml - 在.net core webapi项目中存储xml静态字符串的位置
- amazon-s3 - 使用 lambda 文件流到 s3 文件上传
- powershell - Powershell 单元测试用例
- django - ModuleNotFoundError:没有名为“onbytes”的模块
- mongodb - 查询以查找特定时间和日期范围内的数据
- weblogic-10.x - weblogic.rjvm.PeerGoneException
- r - 如何在 r 中找到加权平均值?
- reactjs - React Redux TypeError:this.props 不是函数