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)
谢谢!
您发布的代码没有为我编译.我在您的哈希键周围添加了单引号~
,并;
在哈希定义之后添加了一个.
解决方案是从正则表达式中删除双引号并简化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)