【问题标题】:perl split behaviour differences?perl拆分行为差异?
【发布时间】:2011-08-01 08:28:10
【问题描述】:

我在 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 脚本更便携?

【问题讨论】:

    标签: arrays perl split


    【解决方案1】:

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

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

    因此,如果您拆分,例如",,,test,,,," 那么你的例子应该打印3。 (在 Ubuntu 10.04 上使用 5.10.1 测试。)

    【讨论】:

    • 是的,此外,print $#{[ split(/,/, ",,,test,,,,", -1) ]}; 应该始终打印7。
    • 我发现在最后一个逗号之后实际上有一个 \r (没有打印出来)。这是一个与 $/ 有关的问题,这在不同的系统上是不同的。
    猜你喜欢
    • 2014-01-11
    • 2014-02-08
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    相关资源
    最近更新 更多