2011-01-24 2 views
4

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

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

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

abc$efg$ehd$rty 
abc$$$ 

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

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

ответ

11

От split documentation:

Если 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; 

Это печатает:

$VAR1 = [ 
      'abc', 
      '', 
      '', 
      '' 
     ]; 
+0

+1 хороший ответ :) –

+0

Высокий, спасибо так много! – Chris

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