my $string = 'one;two--three!!!'; my @list = split /([\W+])/ , $string; my @list2 = split /[\W+]/ , $string; my @list3 = split /([\W]+)/ , $string; my @list4 = split /[\W]+/ , $string; printf "Original: %s\n" , $string; print '-' x 9 , "\n"; foreach ( \@list , \@list2 , \@list3 , \@list4) { printf "%s\n" , join ',' , @{$_}; }