use strict; use warnings; use autodie; my @arr; my $logz = '/var/log/syslog'; my $file = '/home/user/Desktop/keywords'; open my $keysFH, '<', $file; while (<$keysFH>) { chomp; push @arr, "\\b\Q$_\E\\b"; } close $keysFH; my $words = '(?:' . ( join '|', @arr ) . ')'; my $regex = qr/$words/i; open my $logFH, '<', $logz; while (<$logFH>) { print if /$regex/; } close $logFH;