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

时间:2017-02-06 21:50:10

标签: perl split

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

my $data = '54243|601|0|||0|N|0|0|0|0|0||||||99582|';

我用这个来分割数据:

my @data = split ('\|'), $data;

但是,您只需获得19:

,而不是20条数据
print scalar @data;

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

1 个答案:

答案 0 :(得分:8)

待办事项

my @data = split /\|/, $data, -1;

-1告诉split包含空的尾随字段。

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