convertir chaque element d'une liste
Bonjour !
La chose semble simple. Je suis relativement contente du code que j'ai pondu mais il marche pas et je sais pas pourquoi.
Le principe : parcourir une sequence LRAEMN.... et remplacer chaque position par la lettre en cours
exemple :
la lettre en cours est A
donc dans la sequence MTESTAAVTTSGHSLT :
dans mon fichier sortie je devrais avoir
ATESTAAVTTSGHSLT
MAESTAAVTTSGHSLT
MTASTAAVTTSGHSLT
ainsi de suite jusqu' à la derniere
MTESTAAVTTSGHSLA
puis on fait la même chose pour la lettre suivante (les lettres sont determines dans @AcideAmine)
voici ce que j'ai fait :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
my $seq = "";
while (my $ligne = <INFILE>) {
if ($ligne =~ /^[\s\t]+$/)
{ next }
else {
#mutation de chaque position de la chaine
my @AcideAmine= ();
@AcideAmine =("A","R","N","D","C","Q","E","G","H","I","L","K","M","F","P","S","T","W","Y","V");
my $aa;
chomp($ligne); #enleve le saut à la ligne à la fin
my @seq = split(//,$ligne);
foreach $aa(@AcideAmine) {
#induction de la mutation pour chaque lettre de la sequence
foreach my $lettre(@seq){
my $x= $lettre cmp $aa;
if ($x != 0){
splice(@seq,$seq[$lettre],1,$aa);
$seq = join(";",@seq);
$seq=~ s/;$//;
print OUTFILE $seq."\n"
}
else
{next}
}
}
}
} |
mon message d'erreur est :
Argument "N" isn't numeric in array element at Mutation.pl line 39, <INFILE> line 4.
Argument "D" isn't numeric in splice at Mutation.pl line 39, <INFILE> line 4.
Je suis d'accord que c'est pas numerique et justement c'est pas ce que je veux !
en plus j'utilise splice qui est fait pour les listes???
no comprendo:aie:
danke schon sehr sehr