#!usr/bin/perl use warnings; use List::MoreUtils qw(any); open my $wave, '>', 'Wave' or die "Can't open $wave: $!"; open my $keywords, '<', 'Agents' or die "Can't open keywords: $!"; open my $search_file, '<', 'Definitions' or die "Can't open search file: $!"; open my $schedule, '<', 'Schedule' or die "Can't open search file: $!"; @sched = <$schedule>; # read entire file into an array at the start my $keyword_or = join '|', map {chomp;qr/\Q$_\E/} <$keywords>; my $regex = qr|\b($keyword_or)\b|; while (<$search_file>) { while (/$regex/g) { $line = $_; chomp $line; if ( $line =~ /(SCRIPTNAME|DESCRIPTION)/ ) { next; } print $wave $line; if (any { $_ =~ $line } values @sched) { # check if line we're on is also in the @sched array print $wave " | Yes!\n"; } else{ print $wave " | No!\n"; } } } $_->close for $wave, $keywords, $search_file, $schedule;