Perl:在哈希散列中使用Grep键

Ken*_* H. 3 regex perl hash grep

请注意,我对不涉及grep的解决方案持开放态度,而且我是Perl的新手,但我会尽我所能提供尽可能详细的信息.

说我有哈希哈希像这样

%HoH = 
(
    "KeyOne" => { I~Want~This => 1, KeyTwo => 2, I~Also~Want~This => 3},
)
Run Code Online (Sandbox Code Playgroud)

基本上我想获得嵌套哈希中匹配某些模式的每个键,并将其放在一个数组中(例如^ I.*旺旺.*这个$)

我尝试了以下,但没有用:

my $regex = qr/"^I.*Want.*This$"/;
my @keys = grep {defined $HoH {"KeyOne"}{/$regex/} } keys %{$HoH{"KeyOne"}};
Run Code Online (Sandbox Code Playgroud)

谢谢!

too*_*lic 5

您发布的代码没有为我编译.我在您的哈希键周围添加了单引号~,并;在哈希定义之后添加了一个.

解决方案是从正则表达式中删除双引号并简化grep:

use warnings;
use strict;

my %HoH = 
(
    "KeyOne" => { 'I~Want~This' => 1, KeyTwo => 2, 'I~Also~Want~This' => 3},
);

my $regex = qr/^I.*Want.*This$/;
my @keys = grep { /$regex/ } keys %{$HoH{"KeyOne"}};

use Data::Dumper;
print Dumper(\@keys);

__END__

$VAR1 = [
          'I~Also~Want~This',
          'I~Want~This'
        ];
Run Code Online (Sandbox Code Playgroud)