use Data::Dumper; my $str = "aaabbccccdd eee"; my $last = ''; my @res; my $i = -1; for my $chr ( split //, $str ) { $i++ unless $chr eq $last; $res[$i] .= $chr; $last = $chr; } print Dumper \@res; __DATA__ $VAR1 = [ 'aaa', 'bb', 'cccc', 'dd', ' ', 'eee' ];