$str1 = q/ATC[TG]CC/; $ans_of_str2 = all_ans( $str1 ); sub all_ans { my @results; my ( $pre, $multi, $post ) = split /\[(.*)\]/, $_[0]; if ( $multi ) { my @chars = split //, $multi; for ( @chars ) { push @results, "${pre}${_}$post" } return [ @results ]; } return [ $_[0] ]; }