#!usr/bin/perl use warnings; 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: $!"; my $keyword_or = join '|', map {chomp;qr/\Q$_\E/} <$keywords>; my $regex = qr|\b($keyword_or)\b|; while (<$search_file>) { while (/$regex/g) { $line = $_; if ( $line =~ /(SCRIPTNAME|DESCRIPTION)/ ) { next; } print $wave $line; } } $_->close for $wave, $keywords, $search_file;