my @pairs = ( [qw/ATCG TAGC/], [qw/ACTG TGAT/] ); print "@$_: ", (dna_compare(@$_) ? "matched" : "didn't matched"), $/ for @pairs; sub dna_compare { my($dna, $comp) = @_; return !scalar grep { (substr($dna, $_, 1).substr($comp, $_, 1)) !~ m< ^ (?: AT | TA | GC | CG ) \z >x; } 0 .. (length($dna) - 1); } __output__ ATCG TAGC: matched ACTG TGAT: didn't matched