我在perl中有以下代码,试图在%samples_runs的键中找到字符串'$ dataset'并将其存储在数组中
} elsif ( my @matches = grep /$dataset/, keys %samples_runs ) {
my @values = @samples_runs{@matches};
foreach my $match (@matches) {
# do something
}
但是,如果'keys%samples_runs'以“ prefix-1-1”开头,我不希望将其视为匹配项。
因此,如果存在匹配项,它将评估为真'grep / $ dataset /,键%samples_runs'。但是,如果存在匹配项且keys%samples_runs以'prefix-1-1'开头,则不应将任何内容添加到@matches数组中。
我该如何实现?
答案 0 :(得分:2)
grep
将使您实现所需的任何条件。是的,可以做到。
my @matches = grep ( /$dataset/ and not /^prefix-1-1/, keys %sample_runs );
应该做你想做的。