Perl分割函数 - 连续分隔符

Chr*_*ris 4 perl split delimiter

我正在使用该split函数来分割文件中的每个记录.说,分隔符是$.

my @fields = split(/\$/,$record);
Run Code Online (Sandbox Code Playgroud)

如果每个记录有4个字段,并且某些字段为空,则有2个连续的美元符号,如下所示:

abc$efg$ehd$rty
abc$$$
Run Code Online (Sandbox Code Playgroud)

split 不适用于第二条记录,因为在拆分后,只有2个字段,而不是4个字段.

知道如何解决这个问题,或者是否有更好的选择?

Can*_*ice 11

split文档:

如果LIMIT为负数,则将其视为指定了任意大的LIMIT.

这意味着如果您执行以下操作:

my @fields = split( /\$/, $record, -1 );
Run Code Online (Sandbox Code Playgroud)

...然后,您将获得列表中最后三个条目的空字段.

#!perl

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

my $string = 'abc$$$';
my @fields = split( /\$/, $string, -1 );
print Dumper \@fields;
Run Code Online (Sandbox Code Playgroud)

这打印:

$VAR1 = [
          'abc',
          '',
          '',
          ''
        ];
Run Code Online (Sandbox Code Playgroud)