J'utilise Perl pour un script qui prend en entrée deux courtes chaînes d'ADN. En sortie, je concatène les deux chaînes de caractères puis j'imprime la deuxième chaîne alignée sur sa copie à la fin de la chaîne concaténée. Par exemple: si la chaîne d'entrée sont et TTTTT puis AAAA print:Pourquoi Perl n'est pas /// faire ce que je veux?
AAAAATTTTT
TTTTT
Je sais qu'il ya d'autres façons de le faire, mais je suis curieux de savoir pourquoi mon utilisation de tr /// ne fonctionne pas.
Le code du programme est:
use strict;
use warnings;
print "enter a DNA sequence \n";
$DNA1=<>; #<> shorthand for STDIN
$DNA1=~ s/\r?\n?$//;
print $DNA1 "\n\n";
print "enter second DNA sequence \n";
$DNA2=<>;
$DNA2=~ s/\r?\n?$//;
print $DNA2 "\n\n";
$DNA= join("",($DNA1,$DNA2));
print "Both DNA sequences are \"$DNA\" \n\n";
$DNA3=$DNA1;
$DNA3=~ tr/ATCGatcg//;
print $DNA3 "\n\n";
$DNA4= join("",($DNA3,$DNA2));
print $DNA4 "\n\n";
exit;
Est-ce que c'est juste mal formaté ou le format de syntaxe de Perl ressemble-t-il à ceci? –
n'est pas "$ DNA1 = ~ s/\ r? \ N? $ //;" la même chose que "chomp $ DNA1;"? –
oui "$ DNA1 = ~ s/\ r? \ N? $ //;" est la même chose que "chomp $ DNA" mais perl 4 et versions inférieures ne supportent pas chomp donc c'est une alternative et ma machine a installé perl 4. – shubster