in reply to Create the reverse complement DNA sequence without pattern matching and reverse built-in function?

TMTOWTDI:

#!/usr/bin/env perl -l use strict; use warnings; my %comp = qw{A T C G G C T A a t c g g c t a}; my $seq = 'ACGTacgt'; print 'Initial: ', $seq; print 'Complement: ', @comp{split '' => $seq}; print 'Reverse Complement: ', @comp{reverse split '' => $seq};

Output:

Initial: ACGTacgt Complement: TGCAtgca Reverse Complement: acgtACGT

Update:

For the OP: I hope, from other posts in this thread, that it's clear there's no benefit in not using the appropriate tools provided with the language, i.e. tr and reverse.

However, if you do have some reason for writing your code this way, I notice that I did, in fact, use reverse. So, in keeping with the hash slice solution I used, you can get the same output by changing the last two lines to:

my @n = split '' => $seq; print 'Complement: ', @comp{@n}; print 'Reverse Complement: ', @comp{map { $n[$#n - $_] } 0 .. $#n};

-- Ken

  • Comment on Re: Create the reverse complement DNA sequence without pattern matching and reverse built-in function?
  • Select or Download Code