Arrays perl行为差异?
我在windows XP和windows 7上安装了相同版本的active perl 我发现在WindowsXP和ubuntu上split会返回空数组元素,但在Windows7上不会。例如: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脚本的
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(没有打印出来)。这是一个与$/有关的问题,在不同的系统上,它是不同的。