http://www.perlmonks.org?node_id=287644


in reply to Tutorial suggestion: split and join

1) This statement:

If you leave off the pattern, split assumes you want to split on /\s+/.

needs considerable qualification. You can't just 'leave off the pattern' except in one particular circumstance. Try this:

my $str = " foo bar baz "; my @spl = split $str; print "@spl";

It just doesn't work (at least in 5.6.1). You can only leave off the 'pattern' if you also leave off the 'target', ie if you are splitting on an implicit $_, eg:

while ( <DATA> ) { split; #do something interesting; }

2) This is plain wrong:

One special case is when you specify the string literal, " " (a quoted space), which does the same thing as specifying no delimiter at all (no argument).

There is nothing special about " " (see gmax's example above). You are confusing it with ' '.

3) One other minor point, I would suggest bringing the paragraph Preserving delimiters up to just below Where do delimiters go?, which IMHO would be a more logical ordering.

hth

dave

Update: See Abigail-II's post below

Replies are listed 'Best First'.
Re: Tutorial suggestion: split and join
by Abigail-II (Bishop) on Aug 29, 2003 at 14:11 UTC
    There is nothing special about " " (see gmax's example above). You are confusing it with ' '.

    I don't understand how gmax example shows it. Could you provide us with a single string on which splitting with " " produces a different result than splitting with ' '?

    It would be very, very strange if split produces different results, because the difference between " " and ' ' has disappeared long before split is called. After compile time, the difference between " " and ' ' is gone.

    Abigail

      Sorry

      I always thought that the 'magic' of ' ' was limited to single quotes. And a total misreading of this line:

      for ( " ", '\s', '\s+' ) {

      in gmax's code seemed to bear out my fallacy.

      Remark withdrawn, with apologies.

      :( dave