当最后一个字符是终止符时,解决分割函数的问题

Ste*_*ieD 4 perl split

我有20个字段的这一行数据:

my $data = '54243|601|0|||0|N|0|0|0|0|0||||||99582|';
Run Code Online (Sandbox Code Playgroud)

我用这个来分割数据:

my @data = split ('\|'), $data;
Run Code Online (Sandbox Code Playgroud)

但是,不是20个数据,而是只有19个:

print scalar @data;
Run Code Online (Sandbox Code Playgroud)

如果最后一个角色是a,我可以手动push一个空字符串,但我想知道是否有更多的perlish方式.@data|

yst*_*sth 8

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

-1告诉split包含空尾部字段.

(正则表达式周围的括号不正确,导致$ data不被视为split的参数.另外,有一个例外,split的第一个参数总是一个正则表达式,所以最好将它指定为正则表达式而不是一个正则表达式将被解释为正则表达式的字符串.)