我有20个字段的这一行数据:
my $data = '54243|601|0|||0|N|0|0|0|0|0||||||99582|';
我用这个来分割数据:
my @data = split ('\|'),$data;
但是,不是20个数据,而是只有19个:
print scalar @data;
如果最后一个字符是|,我可以手动将空字符串推送到@data但我想知道是否有更美好的方式.
解决方法
做
my @data = split /\|/,$data,-1;
-1告诉split包含空的尾随字段.
(正则表达式周围的括号不正确,导致$data不被视为split的参数.另外,有一个例外,split的第一个参数总是一个正则表达式,所以最好将它指定为正则表达式而不是一个正则表达式将被解释为正则表达式的字符串.)