my $test = qq|1-10,20 some.thing [[else]],bla bla bla|; my @temp = split /([,-\s\.\]\[]+)/, $test; use Data::Dumper; print Dumper(@temp); #### 1 - 10 , 20 some . thing [[ else ]], bla bla bla #### [[ ]] , - \s .