The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"PERL Use of uninitialized value in pattern match (m//)"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"PERL Use of uninitialized value in pattern match (m//)"  +/
Сообщение от Darktj email on 18-Авг-09, 10:59 
Всем доброго дня!
Стоит задача пропарсить Apache логи при помощи perl, при запуске скрипта выдает ошибку:

Use of uninitialized value in pattern match (m//) at pars.pl line 31.

Вот код:
#!/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]*) \"(.*)\" \"(.*)\" \"(.*)\" \"(.*)\" \-};

print $LOG_PATTERN;

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 (){
      
       #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, " referer:",$referer,"\n";
       }
}
close(SEM);

Подскажите пожалуйста как избежать эту ошибку, и с чем она связана?
Заранее благодарю за ХЕЛП:)

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "PERL Use of uninitialized value in pattern match (m//)"  +/
Сообщение от Michael (??) on 18-Авг-09, 11:10 

>Use of uninitialized value in pattern match (m//) at pars.pl line 31.
>

в регулярку передается неинициализированное значение
англ-русский словарь рулит

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "PERL Use of uninitialized value in pattern match (m//)"  +/
Сообщение от Darktj email on 18-Авг-09, 11:17 
>
>>Use of uninitialized value in pattern match (m//) at pars.pl line 31.
>>
>
>в регулярку передается неинициализированное значение
>англ-русский словарь рулит

Может подскажешь как решить проблему и как и где её инициализировать плиииззз!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "PERL Use of uninitialized value in pattern match (m//)"  +/
Сообщение от Michael (??) on 18-Авг-09, 13:06 

>Может подскажешь как решить проблему и как и где её инициализировать плиииззз!
>

я бы начал с
- while (){
+ while (defined(<SEM>)){


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "PERL Use of uninitialized value in pattern match (m//)"  +/
Сообщение от Darktj email on 18-Авг-09, 16:06 
>я бы начал с
>- while (){
>+ while (defined(<SEM>)){

не помогло выдаёт такую же ошибку!


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "PERL Use of uninitialized value in pattern match (m//)"  +/
Сообщение от Michael (??) on 18-Авг-09, 16:14 

>не помогло выдаёт такую же ошибку!

значит причина в самой регулярке и как она используется. мне не совсем нравится вот это m/\'$LOG_PATTERN'/.
а именно кавычки и обратный слеш

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "PERL Use of uninitialized value in pattern match (m//)"  +/
Сообщение от Darktj email on 18-Авг-09, 16:29 
>
>>не помогло выдаёт такую же ошибку!
>
>значит причина в самой регулярке и как она используется. мне не совсем
>нравится вот это m/\'$LOG_PATTERN'/.
>а именно кавычки и обратный слеш

Убрал эти кавычки и обратный слеш  толку это все никакого не дало!


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "PERL Use of uninitialized value in pattern match (m//)"  +/
Сообщение от Michael (??) on 18-Авг-09, 17:03 

>Убрал эти кавычки и обратный слеш  толку это все никакого не
>дало!

в студию кусок лог файла, на котором можно воспроизвести ошибку

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "PERL Use of uninitialized value in pattern match (m//)"  +/
Сообщение от Darktj email on 18-Авг-09, 18:49 
>в студию кусок лог файла, на котором можно воспроизвести ошибку

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);


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "PERL Use of uninitialized value in pattern match (m//)"  +/
Сообщение от angra (ok) on 18-Авг-09, 18:36 
Скрипт, мягко говоря, тупой, ошибку нужно править в ДНК его создателя. Но если настаиваете, то проблема в отсутствии чтения из дескриптора в цикле. Должно быть
while (<SEM>) {
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру