#Given: my $s5 ='CTGGGTATGGGT'; my @a5 = qw(GTATG TGGGT); #### C[TGGGTATGGGT] #### CTGG[GTATGGGT] #### $s5 = "CTGGGTATGGGT"; TGGGT GTATG -- |--- Only this two satisfy. TGGGT -- Since it follows order and delim of the given array. #### # Given: my $s6 = 'AGGAACTTGCCTGTACCACAGGAAG'; my @a6 = qw( CAGGA AGGAA ); #### [AGGAA]CTTGCCTGTACCA[CAGGAA]G #### AGGAACTTGCCTGTACCA[CAGGAA]G #### # Given: my $s7 = 'CAGGACTTGCCTGTACCACAGGAAG'; my @a7 = qw( CAGGA ); This answer would do: CAGGACTTGCCTGTACCA[CAGGA]AG #### # Given: my $s8 = 'CAGGATTTGAGGAAGTACCACAGGAAG'; my @a8 = qw( CAGGA AGGAA ); This answer would do, taking those closest together: CAGGATTTGAGGAAGTACCA[CAGGAA]G doesn't have to be this: [CAGGA]TTTG[AGGAA]GTACCACAGGAAG #### my $t1 ='CCCATCTGTCCTTATTTGCTG'; my @ar1 = qw(ATCTG-3 ATTTG-13); my $t2 ='ACCCATCTGTCCTTGGCCAT'; my @ar2 = qw(CCATC-2); my $t3 ='CCACCAGCACCTGTC'; my @ar3 = qw(CCACC-0 CCAGC-3 GCACC-6); my $t4 ='CCCAACACCTGCTGCCT'; my @ar4 = qw(CCAAC-1 ACACC-4); my $t5 ='CTGGGTATGGGT'; my @ar5 = qw(GTATG-4 TGGGT-7); my $t6 = 'AGGAACTTGCCTGTACCACAGGAAG'; my @ar6 = qw( CAGGA-18 AGGAA-19 ); my $t7 = 'CAGGACTTGCCTGTACCACAGGAAG'; my @ar7 = qw( CAGGA-18 ); my $t8 = 'CAGGATTTGAGGAAGTACCACAGGAAG'; my @ar8 = qw( CAGGA-18 AGGAA-19 ); #### sub put_bracket_wth_idx { my ( $str, $ar ) = @_; for my $subs ( @$ar ) { my ($sb,$id) = split("-",$subs); if ( substr( $str, $id ) =~ /$sb/i ) { substr( $str, $id, length $sb ) =~ tr/A-Z/a-z/; } } $str =~ s/([a-z]+)/[\U$1\E]/g; return $str; }