2013-10-02 6 views
1

Я довольно новичок в Perl. Я пытаюсь прочитать файл строки за строкой, поиск определенного шаблона в каждой строке. Если шаблон найден, мне нужно хранить разные части одной и той же строки в разных переменных. Например, скажем, что это строки в файле -Поиск подстроки и сохранение другой части строки в Perl

01 Started Job 1 Calculation 
02 Started Job 2 Publish 
03 Completed Job 1 Calculation 
04 Started Job 3 Upload 
05 Completed Job 2 Publish 

Я ищу слова «Начатое задание» в каждой строке. Если найдено, мне нужно сохранить следующий номер задания и имя задания, которое было запущено в строке, а также сохранить идентификатор записи (первое слово в строке) в другую строку. До сих пор это код у меня есть -

while (<READLOG>) 
    { 
     if (/Started Job/) 
     { 
       my @words = split(" ",$_); 
       my $recordID = $words[0]; 
       my $Job = $words[3] . " " . $words[4]; 
     } 
    } 

Это работает сейчас, но я хочу знать, если есть лучший способ сделать это? Как хранить все слова, которые следуют за "Started Job"?

Любая помощь очень ценится. Благодаря !

ответ

3

Вы должны посмотреть в регулярные выражения немного больше. Сохранение слов после «Начальное задание» может быть выполнено с использованием сопоставимых групп, то есть /Started Job(.*)$/. Затем вы найдете остальную часть строки в $1.

+0

Это так просто! Большое вам спасибо :) – Amritha

+1

Да, Perl действительно прост. Просто держите его в чистоте, иначе вы не сможете прочитать то, что вы написали два месяца назад;) –

+0

Или '/ Started Job/p', а остальная часть строки находится в' $ {^ POSTMATCH} '. – Kenosis

Смежные вопросы