#!use/bin/perl -w use strict; use warnings; # initalisieren... my %aa=( 'S'=>[qw(TCA TCC TCG TCT AGC AGT)], 'F'=>[qw(TTC TTT)], 'L'=>[qw(TTA TTG CTA CTC CTG CTT)], 'Y'=>[qw(TAC TAT)], '_'=>[qw(TAA TAG)], 'C'=>[qw(TGC TGT TGA)], 'W'=>[qw(TGG)], 'P'=>[qw(CCA CCC CCG CCT )], 'H'=>[qw(CAC CAT)], 'Q'=>[qw(CAA CAG)], 'R'=>[qw(CGA CGC CGG CGT AGA AGG)], 'I'=>[qw(ATA ATC ATT)], 'M'=>[qw(ATG)], 'T'=>[qw(ACA ACC ACG ACT)], 'N'=>[qw(AAC AAT)], 'K'=>[qw(AAA AAG)], 'V'=>[qw(GTA GTC GTG GTT)], 'A'=>[qw(GCA GCC GCG GCT)], 'D'=>[qw(GAC GAT)], 'E'=>[qw(GAA GAG)], 'G'=>[qw(GGA GGC GGG GGT)], ); # daten umformen my %codons; for my $key (keys(%aa)) { $codons{$_}=$key for(@{$aa{$key}}); } # von Komandozeile lesen # oder Nachfragen my $file=shift(@ARGV); unless($file) { print "schreibe Dateinamen: "; $file=; #Zeilenumbruch abschneiden chomp($file); } # dna aus Datei lesen my $dns; open(my $fh ,'<', $file) || error("ERROR open $file ($!)"); { # zeilentrenner ignorieren local $/=undef; # Alles in Großschreibung wandeln $dns=uc(<$fh>); } close($fh); # alles unötige löschen $dns=~s/[\s\r\n]+//isg; my $protein =''; # immer 3 Zeichen vorne abschneiden while(my $codon=substr($dns,0,3,'')) { my $aa=$codons{$codon}; error(qq(ERROR convert "$codon"!)) unless($aa); $protein.=$aa; } print "$protein\n"; ende(); ######################################################################## sub error { my $msg=shift || ''; print STDERR "$msg\n"; ; exit 1; } sub ende { ; exit; }