Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > парсинг имя файла


Автор: tcg2 30.5.2011, 10:32
Описание: файл делится на 2 части, пытаюсь обе части записать в отд. переменные...вот и все ))
Вопрос конкретный: почему для переменных $name и $log пишет
Код

Use of uninitialized value $name in pattern match (m//) at...
 
Сам код (на зам.: выражение под регех срабатывает корректно):
Код

opendir (DIR, "/logdir") or die "couldn't open DIR $!";

while (defined ( my $filename = readdir(DIR)) ) {

        $filename =~ /^(\S+)-(vasya|petya|misha).log/;
        my $name = $1;
        my $log = $2;

Возможно я как-то не так передаю, прошу исправить!

Автор: arto 30.5.2011, 11:36
а что у вас происходит, если $filename не матчится?

Автор: Pfailed 30.5.2011, 15:03
Код

$filename =~ /^(\S+)-(vasya|petya|misha).log/
    or next;


Так будет лучше по-моему.

Автор: tcg2 30.5.2011, 15:15
filename, к сожалению всегда мачится )), регехы универсальные  smile. Я вроде бы разобрался, тему наверное закроем...только для тех кто желает ) помочь:
как сделать так (на пимеру выше), что если лог файл нулевой длинный, переходил на следующий?
Спасибо всем!

Автор: EcSYZ 30.5.2011, 15:17
Код

next if( -z $filename );

Автор: tcg2 30.5.2011, 15:33
VINGRA-D-D-D РУЛИТТТТ!  smile 
Спасибо! Тема ПРЕзакрыта!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)