knoppix@Microknoppix:~$ perl -E ' > $str = q{one abc two abc three abc four}; > $sep = q{abc}; > say q{-} x 25; > > @arr = split m{($sep)}, $str; > say qq{Split on m{($sep)} into one array}; > say qq{ ->$_<-} for @arr; > say q{-} x 25; > > push @{ $_ eq $sep ? \ @seps : \ @nums }, $_ > for split m{($sep)}, $str; > say qq{Split on m{($sep)} into two arrays}; > say q{ Nums:}; > say qq{ ->$_<-} for @nums; > say q{ Seps:}; > say qq{ ->$_<-} for @seps; > say q{-} x 25; > > @seps = (); @nums = (); > push @{ $_ eq $sep ? \ @seps : \ @nums }, $_ > for split m{\s+}, $str; > say qq{Split on m{\\s+} into two arrays}; > say q{ Nums:}; > say qq{ ->$_<-} for @nums; > say q{ Seps:}; > say qq{ ->$_<-} for @seps; > say q{-} x 25;' ------------------------- Split on m{(abc)} into one array ->one <- ->abc<- -> two <- ->abc<- -> three <- ->abc<- -> four<- ------------------------- Split on m{(abc)} into two arrays Nums: ->one <- -> two <- -> three <- -> four<- Seps: ->abc<- ->abc<- ->abc<- ------------------------- Split on m{\s+} into two arrays Nums: ->one<- ->two<- ->three<- ->four<- Seps: ->abc<- ->abc<- ->abc<- ------------------------- knoppix@Microknoppix:~$