No, it's not inconsistant. Think about the simpler case split /a/,'aaaaa'
which return a list of empty strings. Now ask to keep the separators
split /(a), 'aaaaa' which will return ('', 'a', '', 'a', '', 'a', '', 'a, '',
'a'). Now look at
split /(a)/, 'aaab' which returns ('', 'a', '', 'a', '', 'a', 'b'). not no
empty string ebfore the 'b'.
In the case of split /(..)/, "12345678" all those pairs of digits are all
spearators so again you get empty strings aternating with digit pairs. If the
number of digits is odd the lat on isn't a separator so it takes the place of
the final empty string and there won;t be a empty string in the list before it,
I.e,
split /(..)/, 12345 returns (''. '12', '', '34', '5');
This is another of those cases where the computer did exactly what you ask it
to.
--
Mark Biggar
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
> Autrijus Tang wrote:
> > I don't know, I didn't invent that! :-)
> >
> > $ perl -le 'print join ",", split /(..)/, 123'
> > ,12,3
>
> Hmm,
>
> perl -le 'print join ",", split /(..)/, 112233445566'
> ,11,,22,,33,,44,,55,,66
>
> For longer strings it makes every other match an empt string.
> With the "Positions between chars" interpretation the above
> string is with '.' indication position:
>
> .1.1.2.2.3.3.4.4.5.5.6.6.
> 0 1 2 3 4 5 6 7 8 9 1 1 1
> 0 1 2
>
> There are two matches each at 0, 2, 4, 6, 8 and 10.
> The empty match at the end seams to be skipped because
> position 12 is after the string? And for odd numbers of
> chars the before last position doesn't produce an empty
> match:
> perl -le 'print join ",", split /(..)/, 11223'
> ,11,,22,3
>
> Am I the only one who finds that inconsistent?
> --
> TSa (Thomas Sandla�)
>