On Jul 28, 10:12 am, chandan_28...@yahoo.com (Chandan Kumar) wrote:
> Hi ,
>  
> using split ,I would like to split on space character. Dont want to use 
> character classes.
> my $string="108 ambulance 100\nfireengine141jack";
>  
> my @array = split /' '/,$string; 
>

 From the doc:  perldoc -f split

    As a special case, specifying a PATTERN of space (' ') will
    split on white space just as "split" with no arguments does.
    Thus, "split(' ')" can be used to emulate awk's default ...

So,  /' '/ in your regex causes a pattern match on a
literal ' '. When the search fails, the entire $string is
returned:
  
> foreach my $value (@array){
> print "$value \n";}
>
>  
> Result : its splitting on new line character.instead of space character.
>  
> Can some one clarify ?

No, there's no split on a newline. You'd have to specify
/\n/ for that to happen. In your case,  the whole string
is returned since the pattern match fails. This would've
been clear if your code had been:

    foreach my $value {...@value) { print "=$value=\n"; }

which would've printed:
   =108 ambulance 100
   fireengine141jack=

>  
> for the same if the string is enclosed in single quotes ,splitting is not 
> happening on the given string.
>  

No, single quotes  don't  impact the split but only
whether interpolation occurs inside the string.

--
Charles DeRykus


--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to