perl分裂行为的差异?

时间:2011-04-08 08:51:22

标签: arrays perl split

我在Windows XP和Windows 7上安装了活动的perl相同版本。

我发现在Windows XP上和ubuntu split会返回空数组元素,但是在Windows 7上它不会。例如:

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

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

1 个答案:

答案 0 :(得分:2)

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

  

默认情况下,空的前导字段为   保留的,空的尾随的   删除。 (如果所有字段都是空的,   他们被认为是落后的。)

所以,如果你分开,例如",,,test,,,,"然后您的示例应打印3。 (在Ubuntu 10.04上经过5.10.1测试。)