Perl を使用して文中のキーワードを見つけたい場合、次のようなものがあります。
foreach $line (@lines) 
{ 
   if ($line =~/keyword/) 
   {
      print $line;
   }
}
文に他のキーワードがあるかどうかを確認したい場合、マッチングをどのように変更すればよいですか?
いくつかの解決策があります。のようなものを使用するのが最も簡単です/keyword.*keyword/。
文字列内のキーワードの数をカウントしたい場合 (2 つのキーワードがあるかどうかを単純にチェックするのではなく)、次のようにすることができます。
for(@lines){
    my $n = 0;
    $n++ while /(keyword)/g;
    print if ($n>2);
}
ところで、コードはより簡潔にすることができます。
for (@lines) {
  print if /keyword/;
}
それは同じです。
文に他の(異なる)キーワードが含まれているかどうかを確認したいですか、それとも同じキーワードが複数回含まれているかどうかを確認したいですか。
最初に、あなたは書くことができます
if ($line =~ /keyword1|keyword2|keyword3/) { ... }
2つ目は次のようになります
my $n = () = $line =~ /keyword/g;
すべての一致の各一致を処理する場合 ( g修飾子):
my $number_of_matches = 0;
foreach $line (@lines) 
{ 
   while ( $line =~ m/keyword/g ) 
   {
      do_something_you_need();
      $number_of_matches++;
   }
}
my @words=map {split / /;} @lines;
foreach my $el(@keywords) {
    @match=grep {$el eq $_} @words;
}