in reply to Re: rearranging text
in thread rearranging text

Hey Roger,

Can you enlighten on the purpose of '\s+' in the split expression?

Replies are listed 'Best First'.
Re: Re: Re: rearranging text
by Roger (Parson) on Dec 02, 2003 at 10:57 UTC
    \s means match a single space, \s+ means match one or more spaces.

    In the example below:
    use strict; use Data::Dumper; my $string = 'a, 1, 2, 3'; my @split_comma = split /,/, $string; print "\@split_comma =>", Dumper(\@split_comma); my @split_comma_space = split /,\s+/, $string; print "\@split_comma_space =>", Dumper(\@split_comma_space);
    Notice in the output -
    @split_comma =>$VAR1 = [ 'a', ' 1', ' 2', ' 3' ]; @split_comma_space =>$VAR1 = [ 'a', '1', '2', '3' ];
    Splitting with comma only leaves spaces in array elements, while splitting with comma+space leaves no spaces in array elements.

    What split /,\s+/ does is to set the separator as comma followed by 1 or more spaces, thus eliminating the spaces from the result.