为什么这些都不归还BBB?
$ perl -e '$a=" "; print map { "b" } split / /, $a;' <<nothing>> $ perl -e '$a=",,"; print map { "b" } split /,/, $a;' <<nothing>> $ perl -e '$a=" a"; print map { "b" } split / /, $a;' bbb $ perl -e '$a=",,a"; print map { "b" } split /,/, $a;' bbb
我早就料到了 split 在所有情况下返回包含3个元素的数组。
split
$ perl -V Summary of my perl5 (revision 5 version 24 subversion 1) configuration:
split 第三个参数表示要生成多少元素:
split /PATTERN/,EXPR,LIMIT … 如果 LIMIT 如果为负,则将其视为任意大;生成尽可能多的字段。 如果 极限 如果省略(或等于零),则通常将其视为负数,但除去尾随的空字段(始终保留空的前导字段);如果所有字段都为空,则认为所有字段都是尾随的(因此在本案)。
split /PATTERN/,EXPR,LIMIT
… 如果 LIMIT 如果为负,则将其视为任意大;生成尽可能多的字段。
LIMIT
如果 极限 如果省略(或等于零),则通常将其视为负数,但除去尾随的空字段(始终保留空的前导字段);如果所有字段都为空,则认为所有字段都是尾随的(因此在本案)。
极限
它默认为 0 这意味着尽可能多 但留下任何后面的空元素 .
0
你可以通过 -1 作为第三个论点 分裂 抑制这种行为。
-1
分裂