use Data::Dumper; my $s = 'earth, wind & fire'; my @out = split /\s*([,&])\s*/, $s; print Dumper \@out; __END__ $VAR1 = [ 'earth', ',', 'wind', '&', 'fire' ];