Использование разделителя записей разной длины - PullRequest
1 голос
/ 09 сентября 2010

Я понимаю, что следующий скрипт распечатает строку (и), разделенные '-' (2 черточки), но как я могу использовать его, когда есть много '-' (черточек)?

{
   local $/ = "--\n";
   while (<>) {
      chomp;
      print;
   }
}

1 Ответ

8 голосов
/ 09 сентября 2010

Вам придется свернуть свой собственный анализатор потока данных. $/ не соответствует задаче:

Помните: значение $ / является строкой, а не регулярным выражением. awk должен быть лучше для чего-то. : -)


Но линия, которая заканчивается тремя штрихами и новой строкой, также является строкой, которая заканчивается двумя штрихами и новой строкой. Разве не достаточно просто поменять команду chomp?

{
   local $/ = "--\n";
   while (<>) {
      chomp; s/\-+$//;    # chop off minimum record separator AND extra dashes
      print;
   }
}

или

       chomp && s/\-+$//

для случая, когда последняя запись в данных не заканчивается строкой разделителя записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...