#!/usr/bin/perl use strict; use warnings; my @strings = qw( GNNTCGANNTT GAATCGNNNTT GANNCGNNNNN ); my @found; for my $string( @strings ){ my $revstring = reverse $string; $revstring =~ m< (?: .*? (?{ [ $^R ? @{ $^R } : () , pos ] }) NN+ )+ (?{ @found = @{ $^R }; }) >x; print "String: $string Positions: ", join( ', ', @found ), "\n"; }