Функция разделения Perl - последовательные разделители - PullRequest
4 голосов
/ 25 января 2011

Я использую функцию split для разделения каждой записи в файле. Скажем, разделителем является $.

my @fields = split(/\$/,$record);

Если каждая запись имеет 4 поля и если некоторые поля пусты, есть 2 последовательных символа доллара, как показано ниже:

abc$efg$ehd$rty
abc$$$

split не работает для второй записи, так как после разделения есть только 2 поля вместо 4.

Есть идеи, как это исправить или есть варианты получше?

1 Ответ

11 голосов
/ 25 января 2011

Из документации split :

Если LIMIT отрицателен, он обрабатывается так, как если бы был указан произвольно большой LIMIT.

Это означает, что если вы сделаете что-то вроде:

my @fields = split( /\$/, $record, -1 );

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

#!perl

use strict;
use warnings;
use Data::Dumper;

my $string = 'abc$$$';
my @fields = split( /\$/, $string, -1 );
print Dumper \@fields;

Thisотпечатки:

$VAR1 = [
          'abc',
          '',
          '',
          ''
        ];
...