sub revcompl { # operates on all elements passed in my (@dna) = @_; foreach my $segment (@dna) { my $revcomp = reverse($segment); $revcomp =~ tr/ACGTacgt/TGCAtgca/; push @done, $revcomp; } return @done; # or reverse @done; # what's best semantics? }