# Remove empty strings from @skeyw and @premiumkeyw @skeyw = grep {$_ ne ""} @skeyw; @premiumkeyw = grep {$_ ne ""} @premiumkeyw; # Build a big regular expression out of @skeyw # for faster matching. my $skeyw_regexp = join('|', @skeyw); $skeyw_regexp = qr/$skeyw_regexp/; # Repeat for @premiumkeyw my $premium_regexp = join('|', @premiumkeyw); $premium_regexp = qr/$premium_regexp/; # Foreach line in @sidx foreach my $line (@sidx) { # Keep it (save it in @resultline) if it matches # any test in @skeyw. if($line =~ /$skeyw_regexp/) { # do something with search results push @resultline, $line; $icnt++; # do you need this? } } # Foreach element in @sidx2 foreach my $line (@sidx2) { # Keep it (save it in @resultline2) if it matches # any test in @premiumkey. if($line =~ /$premium_regexp/) { # do something with search results push @resultline2, $line; $icnt++; # do you need this? } }