use strict; use warnings; my $string='YYSFTVME[13]TDPVN[115]HMVGVISVE[13]GRPGLFWFN[115]ISGGDKN[115]'; my $substring = 'N[115]'; my @chars = $string =~ /(.(?:\[\d+\])?)/gxms; my @positions; foreach my $i (0..$#chars) { push @positions, $i if $chars[$i] eq $substring; } print "Positions: @positions\n";