\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.
|