Arrays perl行为差异?

Arrays perl行为差异?,arrays,perl,split,Arrays,Perl,Split,我在windows XP和windows 7上安装了相同版本的active perl 我发现在WindowsXP和ubuntu上split会返回空数组元素,但在Windows7上不会。例如: my @array; my $item = "test,,,,"; @array = split(/,/,$item); print $#array; 将打印4,数组将有3个空元素,但在windows 7上它始终打印0,并且只有1个元素。有人知道为什么会发生这种情况,以及我应该使用什么来提高perl脚本的

我在windows XP和windows 7上安装了相同版本的active perl

我发现在WindowsXP和ubuntu上split会返回空数组元素,但在Windows7上不会。例如:

my @array;
my $item = "test,,,,";
@array = split(/,/,$item);
print $#array;

将打印4,数组将有3个空元素,但在windows 7上它始终打印0,并且只有1个元素。有人知道为什么会发生这种情况,以及我应该使用什么来提高perl脚本的可移植性吗?

根据Windows 7版本的文档,这是正确的:

默认情况下,将显示空的前导字段 保留,并保留空的尾随项 删除。(如果所有字段均为空, 它们被认为是拖尾的。)


因此,如果您拆分,例如,
“,,test,,,,”
,那么您的示例应该打印
3
。(在Ubuntu 10.04上使用5.10.1进行了测试。)

是,而且,
print$#{[split(/,/,“,,,test,,,,,,,,,-1)]
应该总是打印
7
。我发现在最后一个逗号后面实际上有一个\r(没有打印出来)。这是一个与$/有关的问题,在不同的系统上,它是不同的。