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)