2017-02-06 7 views
4

У меня есть эта строка данных с 20 полей:Работа вокруг расщепленной функции, когда последний символ является терминатор

my $data = '54243|601|0|||0|N|0|0|0|0|0||||||99582|'; 

Я использую это, чтобы разделить данные:

my @data = split ('\|'), $data; 

Однако, вместо 20 кусков данных, вы получите только 19:

print scalar @data; 

Я мог бы вручную push пустая строка на @data, если последний символ - |, но мне интересно, есть ли более персидский путь.

+0

Ваш ввод содержит только 18 символов '' '(так что данные 18-19) – mob

ответ

8

ли

my @data = split /\|/, $data, -1; 

-1 говорит split включать пустые поля хвостовых.

(Ваши скобки вокруг регулярного выражения неверны и приводят к тому, что $ data не рассматривается как параметр разделения. Кроме того, с одним исключением первый аргумент split всегда является регулярным выражением, поэтому лучше указать его как регулярное выражение не является строкой, которая будет интерпретироваться как регулярное выражение.)

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

  • Нет связанных вопросов^_^