Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在perl中,从与数组中的值匹配的哈希映射中删除键_Arrays_Perl_Hash_Key - Fatal编程技术网

Arrays 在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, '

我想使用Perl从哈希映射中删除与给定数组中的值匹配的键

例如:

输入:

   @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};