>в студию кусок лог файла, на котором можно воспроизвести ошибку Michael огромное спасибо! Проблема решена, она заключалась в
1) "while (){" заменил на "while (<SEM>){"
2) "m/\'$LOG_PATTERN'/" убрал кавычки и обратный слэш "m/$LOG_PATTERN/"
Благодарю Michael за то что подсказал куда копать ;)
теперь скрипт выглядит так:
#!/usr/bin/perl -w
use strict;
#Change this regular expression pattern according to your apache log forma.
my $LOG_PATTERN = q{(.*) \- \[(.*)\] \"(.*) (.*)\?(.*) HTTP\/(.*)\" ([0-9]*) ([0-9]*) \"(.*)\" \"(.*)\" \"(.*)\" \"(.*)\" \-};
my $len = @ARGV;
if ($len <1){
print "Usage : perl script_name logfile\n";
exit();
}
if (!(-e $ARGV[0])){
print $ARGV[0]," not exists.\n";
exit();
}
#Open log file for reading.
open (SEM, "< $ARGV[0]") or die "Cannot open file $ARGV[0]\n";
while (<SEM>){
#We can also assign to a hash.
if (my($ip,
$date,
$method,
$url,
$query,
$protocol,
$ret_code,
$byte,
$referer,
$user_agent,
$tc, $imp)=($_ =~ m/$LOG_PATTERN/)){
print "IP :",$ip, " date :",$date, " referer:",$referer,"\n";
}
}
close(SEM);