2011-01-24 3 views
4

split 함수를 사용하여 파일의 각 레코드를 분할합니다. 예를 들어, 구분 기호는 $입니다.펄 분할 함수 - 연속 된 구분 기호

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

각 레코드는 4 개 필드를 가지고 있으며, 일부 필드가 비어있는 경우, 2 개 연속 달러 기호, 거기에 다음과 같은 경우

abc$efg$ehd$rty 
abc$$$ 

split 후 이후, 두 번째 레코드가 작동하지 않습니다 분할, 4 대신 단지 2 개의 필드가 있습니다.

어떤 문제 해결 방법이나 더 좋은 옵션이 있습니까? split documentation에서

답변

11

: 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