2013-12-08 3 views
0

Я пытаюсь разобрать файл, который выглядит следующим образом:Разбор текста в Perl (цикл)

TIME: 07/24/13 15:30:04 
ASPATH: 172193 19601 14835 19074 19420 4704 8266 9486 8580 

Я уже начал работать над анализатором, но так как я новичок в Perl, я не могу понять , как я может анализировать конкретную линию, которая меня беспокоит что,

ASPATH: 172193 19601 14835 4758 15731 3341 

Эти узлы графа, смысл ссылки 172193 -> 19601 ---> 14835 и так далее. Я не хочу хранить эти данные в своей базе данных так, как есть, скорее, я хочу ее разбить и вставить каждый узел в базу данных (из-за связи с базой данных узла, к которой эта таблица привязывается) с индексом представляющий путь. Так, например,

node  index 
172193  1 
19601  2 
14835  3 

and so on..... 

Таким образом, индекс предназначен, чтобы сообщить мне о связи между узлами. Поэтому, если я начну обрабатывать следующую запись, она снова начнется с индекса 1.

Это то, что я уже не включал в себя все атрибуты (особенно ASPATH), но которые меня беспокоят.

 } elsif (/^ASPATH/) { 
      ##HERE IS WHERE I AM LOST AS EXPLAINED** 
     } 

ответ

2
 }elsif (/^ASPATH/) { 
      my @nodes = split /\s/; 
      shift @nodes; # discard ASPATH 

      my $index = 0; 
      foreach my $node (@nodes) { 
       $index++; 

       # process ($node, $index) here 
      } 
     } 
+0

@choroba: Вы _can_ использовать '» «'в качестве аргумента там также разделить на пробельных. Но да, '' \ s'' неверно. Спасибо за редактирование. FWIW, эта ошибка также встречается в исходном вопросе. –

+0

На самом деле вы можете использовать 'split' без аргументов в этом случае :-) – choroba

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