整个数组中的模式匹配

fir*_*roz 0 perl pattern-matching

谁能告诉我如何一次搜索整个阵列中的模式,例如

@array = ('I am AA','I am BB', 'I am CC', 'I am AAC')
$pattern = "AA"
Run Code Online (Sandbox Code Playgroud)

我使用以下逻辑但它不起作用

if (@array =~ /$pattern/) {
    # do this; 
} else {
    # do that 
} 
Run Code Online (Sandbox Code Playgroud)

谢谢

Mil*_*ler 5

你可能正在寻找一个 grep

my @array = ('I am AA','I am BB', 'I am CC', 'I am AAC');
my $pattern = "AA";

if (my @matches = grep {$_ =~ /$pattern/} @array) {
    print "These entries matched:\n";
    print "'$_'\n" for @matches;
    # do this; 

} else {
    # do that 
} 
Run Code Online (Sandbox Code Playgroud)

但是,如果您的模式与您实际匹配的模式类似,那么您的模式也可能不一定按预期方式工作.我建议你为你的模式添加一个单词边界quotemeta.

if (my @matches = grep {$_ =~ /\b\Q$pattern\E\b/} @array) {
Run Code Online (Sandbox Code Playgroud)