perl - 如何在不丢失冗余值的情况下将两个单独的数组合并为 perl 中的哈希?
问题描述
我有两个数组:
@arr = qw(feature1 feature2 feature3);
@arr2 = qw(prod1 prod2 prod3 prod4);
我需要 perl 中的最终哈希,如下所示:
%hash = {
feature1 => prod1,
feature2 => prod2,
feature3 => qw(prod3 prod4)
};
要合并我使用的两个数组:
@hash{@feat} = @prod;
print Dumper \%hash;
我应该如何实现这一目标?
解决方案
你想要什么是不可能的,因为你不能有一个与feature3
键关联的值列表。您需要在那里有一个数组引用。
你不能在一个单一的任务中做到这一点(或者,至少,我想不出一种方法来做到这一点),但这似乎相对简单。
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use Data::Dumper;
my @feat = qw(feature1 feature2 feature3);
my @prod = qw(prod1 prod2 prod3 prod4);
my %hash;
if (@feat == @prod) {
@hash{@feat} = @prod;
} else {
@hash{@feat[0 .. $#feat - 1]} = @prod[0 .. $#feat - 1];
$hash{$feat[$#feat]} = [ @prod[$#feat .. $#prod] ];
}
say Dumper \%hash;
请注意,它假定您的两个数组的长度相同,或者@feat
比@prod
.
推荐阅读
- javascript - 使用javascript验证动态表
- python - 将当前行追加到上一行
- javascript - 在 WordPress 中的 async/await/then Javascript 块中提交评论表单
- android - 未触发自定义 BaseAdapter 的 getView() 方法
- android - 我们可以在我们的应用程序中获取其他应用程序的打开和关闭时间吗?
- python - 如何在类的构造函数中处理魔术变量
- python - UnboundLocalError:分配前引用的局部变量“socialhandle”
- c# - UnityWebRequest Post 得到未知响应
- c++ - 使用 Visual Studio Code 和 CMake 调试 OpenGL(使用 GLEW&GLFW),无法设置断点
- javascript - 将匿名功能分配给按钮