Как я могу ограничить количество возвращаемых предметов в сплите Perl? - PullRequest
1 голос
/ 20 октября 2010

У меня возникла проблема при разборе сложного файла, содержащего тысячи строк.

Я уже реализовал свой Perl-скрипт, как это было несколько дней назад.

 my ($head, $tail) = split /=/, $line;

Почти все мои исходные файлы $line стиль, как показано ниже:

constant normalLines = <type value>     /*  hello world  */

и я могу получить вывод $tail = /* hello world */

Сегодня я обнаружил ошибку, когда я анализирую строку следующим образом (в строке два =)

constant specialLine = <type value>     /*  hello = world  */

Но теперь вывод $tail = /* hello

Как я могу исправить мою ошибку, используя split() в моем коде выше? Я все еще хочу вывод $tail = /* hello = world */

Ответы [ 2 ]

7 голосов
/ 20 октября 2010

Вы можете указать параметр limit, чтобы указать split , сколько частей вы хотите максимум:

# split /PATTERN/,EXPR,LIMIT

my ($head, $tail) = split /=/, $line, 2;
2 голосов
/ 20 октября 2010

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

  ["constant specialLine ", " <type value>     /*  hello ", " world  */"]

Когда вы используете это в назначении списка, вы берете первые два значения, а остальные отбрасываются.

...