use strict; use warnings; use Data::Dumper; my @repeats; while ( 'xx556xx' =~ m/((.)(\2)*)/g ) { push @repeats, $1; } print Dumper(\@repeats);