my @foo = split /(?|(A)|(B))/, "1A2B3"; use Data::Dumper; print Dumper \@foo; #### $VAR1 = [ '1', 'A', '2', 'B', '3' ];