http://qs321.pair.com?node_id=592363


in reply to Re: Understanding Split and Join
in thread Understanding Split and Join

Both exceptions, the special treatment of // and /^/ by split, are documented in split. Both may deserve to be mentioned in the tutorial quickly for the profit of the unaware. The last remark by ysth about the non-equivalence of /^(?#)/ and /^ /x with // for split purposes is a subtle thing. More subtle if you compare to the fact that / /x, / # /x or even / (?#)/x have the same treatment as // when passed to this function. Looks like a case to be fixed either in the docs or in the code of the Perl interpreter itself (if not barred by compatibility issues).

Replies are listed 'Best First'.
Re^3: Understanding Split and Join
by ysth (Canon) on Dec 31, 2006 at 01:44 UTC
    Looks like a case to be fixed either in the docs or in the code of the Perl interpreter itself
    I'm not sure what you mean by "fixed"? split doesn't have the special logic for // that match and substitution do, but even those operations don't have special logic for / /x, / # /x or / (?#)/x.
      I think I have misunderstood that behavior:
      $ perl -e '@a = split //, 'abc'; print "@a"' a b c $ perl -e '@a = split / /x, 'abc'; print "@a"' a b c $ perl -e '@a = split / # /x, 'abc'; print "@a"' a b c $ perl -e '@a = split / (?#) /x, 'abc'; print "@a"' a b c

      The logic of split does not need to be special for this to work. These are real empty patterns and split understand they are meant to split characters as they return empty delimiters. But you were saying that the same is not automatic for patterns equivalente to /^/. Sorry for the confusion I made.