Untested code, but I hope it will give you a hint or two...
use strict; # Please
use warnings; # Please
# $n = 0; # There may be a better way
# 'my' added to localise the scope of these variables
# It won't matter much now, but when you get to large programs its a l
+ife saver
my $logz = '/var/log/syslog';
my $file = '/home/user/Desktop/keywords';
# Nowadays we use the three parameter form of open.
# its good to check the results too.
# open(LOGFILE, $logz);
# open(KEYWORD, $file);
open my $log, '<', $logz or die "Can't read $logz: $!\n";
open my $keys,'<', $file or die "Can't read $file: $!\n";
# I guess you want to check the keys against each logline
# here I am going to take a different approach
# Dont read the log all in one go, we will just check it line
# at a time
# @keyWord = <$keys>;
# @logFile = <LOGFILE>;
# precompile the regex for the keys
my %re_key; # regex compiled keys
while (my $pattern = <$keys> ) { # check each key
chomp $pattern; # remove line ending
$re_key{$pattern} = qr/$pattern/; # store in a hash
}
# $keyz = @keyWord[$n]; # this was only looking at one key.
while (my $line = <$log> ) {
for my $pattern (keys %re_key) {
print "$pattern matched in $log" if $line =~ /$re_key{$pattern
+}/;
}
}
Cheers,
R.
Pereant, qui ante nos nostra dixerunt!