On Wed, Dec 27, 2006 at 10:58:40PM -0700, Chad Perrin wrote: > On Wed, Dec 27, 2006 at 07:42:59PM -0500, M. Lewis wrote: > > John W. Krahn wrote: > > >M. Lewis wrote: > > >> > > >>while (my $ln = <DATA>){ > > >> chomp $ln; > > >> my ($prod, $flavor) = split /\s/, $ln, 2; > > > > > >You probably should use ' ' instead of /\s/ as the first argument to split: > > > > > > my ($prod, $flavor) = split ' ', $ln, 2; > > > > Ok, but why? Are they not the same? > > No, they're not. ' ' is a literal space. /\s/ matches any whitespace.
Actually, on second thought, I seem to recall that ' ' has a meaning in split() beyond a literal space. Unfortunately, I don't recall exactly what that is. I've tried looking it up using perldoc -f split and in several books I have here, and I've tried testing it in simple Perl scripts. The end result is that I've got nothin' -- except that it so far seems to be acting just like /\s/. I'd appreciate it if someone on this list would remind me about the differences. Both ' ' and /\s/ seem to be matching multiple whitespace characters when used with split() with no differences, including matching spaces, tabs, and newline characters. Example: $ perl -le "@foo = split ' ', qq( one two three\t\n four ); print @foo;" onetwothreefour $ perl -le "@foo = split /\s/, qq( one two three\t\n four ); print @foo;" onetwothreefour -- CCD CopyWrite Chad Perrin [ http://ccd.apotheon.org ] "The measure on a man's real character is what he would do if he knew he would never be found out." - Thomas McCauley -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/