Arrays 在perl中,从与数组中的值匹配的哈希映射中删除键
我想使用Perl从哈希映射中删除与给定数组中的值匹配的键 例如: 输入:Arrays 在perl中,从与数组中的值匹配的哈希映射中删除键,arrays,perl,hash,key,Arrays,Perl,Hash,Key,我想使用Perl从哈希映射中删除与给定数组中的值匹配的键 例如: 输入: @array = ("apple", "banana" , "cherry") %hash = ( '/abc/apple/somestring' => val1, '/banana/somestring/somesting' => val2, '/xyz/apple/somestring' => val3, '
@array = ("apple", "banana" , "cherry")
%hash = ( '/abc/apple/somestring' => val1,
'/banana/somestring/somesting' => val2,
'/xyz/apple/somestring' => val3,
'/somestring/somestring/' => val4,
'/xyz/somestring/random' => val2,
)
输出:
%hash = ( '/somestring/somestring/' => val4,
'/xyz/somesting/random' => val2,
)
简单:
for my $elem (@array) {
my @matching_keys = grep { 0 <= index $_, $elem } keys %hash;
0简单:
对于数组中的每个元素,选择匹配的哈希键
for my $elem (@array) {
my @matching_keys = grep { 0 <= index $_, $elem } keys %hash;
像符咒一样工作的0。我正在使用foreach循环进行迭代,但没有成功。@amon,太棒了!我今天读到的最好的提示是:)删除+切片!好极了!这很有魅力。我正在使用foreach循环进行迭代,但没有成功。@amon,太棒了!我今天读到的最好的提示是:)删除+切片!好极了!
my $rx = join '|', map quotemeta, @array;
my @matching_keys = grep /$rx/, keys %hash;
delete @hash{@matching_keys};