IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

Besoin d'un peu d'aide


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 5
    Par défaut Besoin d'un peu d'aide
    Bonjour à tous,

    Je suis Célia, étudiante en thèse de cancérologie sur Toulouse. Dans le cadre de ma thèse, j'étudie de phosphoprotéome de cellules cancéreuses pancréatiques traitées avec différentes drogues. Nous avons par conséquent généré beaucoup données et j'essaye de les traiter afin de trouver de nouvelles cibles thérapeutiques.

    Je me retrouve bloquer depuis quelques semaines sur une étape de tri des données impossible à la main car j'ai plus de 20 tableaux avec 8000 lignes chacun. Plus précisément, le tri consiste a apparié deux séquences (lignes) identiques : une séquence non marquée et une séquence marquée présentant l'information "Label" dans la partie Modification2 - Voir l'exemple. Ce que j'entends pas identique concerne l'information contenu dans les parties Séquence et la Modification1. Sachant que la comparaison ne doit pas prendre en compte la case de la séquence.

    Mes données ont la forme suivante:
    Sequence_Modification1_Modification2

    L'information "Label" est présente dans la modification2 si la séquence est marquée.

    Exemple:
    AGTLSITEFADmLSGNAGGFrsr_S22(Phospho);M12(Oxidation)_M12(Oxidation);R21(Label:13C(6)15N(4));S22(Phospho);R23(Label:13C(6)15N(4))
    AGmSSNQSISsPVLDAVPR_S11(Phospho);M3(Oxidation)_M3(Oxidation);S11(Phospho)
    AHLsENELEALEk_S4(Phospho)_S4(Phospho);K13(Label:13C(6)15N(2))
    AGAGmITQHSSNAsPINR_S14(Phospho);M5(Oxidation)_M5(Oxidation);S14(Phospho)
    AHLsENELEALEK_S4(Phospho)_S4(Phospho)
    AGTLSITEFADMLSGNAGGFRsR_S22(Phospho)_S22(Phospho)
    AHLsENELEALEk_S4(Phospho)_S4(Phospho);K13(Label:13C(6)15N(2))
    AHLTVGQAAAGGsGNLLTER_S13(Phospho)_S13(Phospho)
    AHLTVGQAAAGGsGNLLTEr_S13(Phospho)_S13(Phospho);R20(Label:13C(6)15N(4))
    AGAGmITQHSSNAsPINr_S14(Phospho);M5(Oxidation)_M5(Oxidation);S14(Phospho);R18(Label:13C(6)15N(4))
    Résultat attendu:
    --> Séquences appariées:
    AGmSSNQSISsPVLDAVPR_S11(Phospho);M3(Oxidation)_M3(Oxidation);S11(Phospho)
    AGmSSNQSISsPVLDAVPr_S11(Phospho);M3(Oxidation)_M3(Oxidation);S11(Phospho);R19(Label:13C(6)15N(4))
    AGAGmITQHSSNAsPINR_S14(Phospho);M5(Oxidation)_M5(Oxidation);S14(Phospho)
    AGAGmITQHSSNAsPINr_S14(Phospho);M5(Oxidation)_M5(Oxidation);S14(Phospho);R18(Label:13C(6)15N(4))
    AHLsENELEALEK_S4(Phospho)_S4(Phospho)
    AHLsENELEALEk_S4(Phospho)_S4(Phospho);K13(Label:13C(6)15N(2))
    AHLTVGQAAAGGsGNLLTER_S13(Phospho)_S13(Phospho)
    AHLTVGQAAAGGsGNLLTEr_S13(Phospho)_S13(Phospho);R20(Label:13C(6)15N(4))
    --> Séquences non appariées :
    AGTLSITEFADMLSGNAGGFRsR_S22(Phospho)_S22(Phospho)
    AGTLSITEFADmLSGNAGGFrsr_S22(Phospho);M12(Oxidation)_M12(Oxidation);R21(Label:13C(6)15N(4));S22(Phospho);R23(Label:13C(6)15N(4))
    Avec mon collègue, nous avons écrit un script. Il fonctionne très bien pour les lignes ne contenant par l'information oxidation. Le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    36
    37
    38
    my %copy_peptides_labeled =  %peptides_labeled ;
    my $motif = "" ;
    my $motif_ox = "" ;
    my $oxydation = 0 ;
     
    foreach my $k (keys(%peptides)) {
     
    	foreach my $labelled (keys(%peptides_labeled)) {
     
    		$oxydation = 0 ;
     
    		if ($k =~ /Oxidation/){
    			$k =~ /^([a-zA-Z]{4,}_[A-Z][0-9]+\(Phospho\);[A-Z][0-9]+\(Oxidation\))/i ;
    			$motif_ox = $1 ;
    			$oxydation = 1 ;
    		} else {
    			$k =~ /^([a-zA-Z]{4,}_[A-Z][0-9]+)/i ;
    			$motif = $1 ;
    		}
     
     
    			if  ($oxydation == 0 and $labelled =~ m/^$motif/i){
    				print "$k\n" ;
    				print "$labelled\n" ;	
    				delete $peptides_labeled{ $labelled } ;
    				delete $copy_peptides_labeled{ $labelled } ;
    			last ;
    			} 
     
    			if  ($oxydation == 1 and $labelled =~ m/^$motif_ox/i){
    			print "$k\n" ;
    			print "$labelled\n" ;
    			delete $peptides_labeled{ $labelled } ;
    			delete $copy_peptides_labeled{ $labelled } ;
    			last ;
    			}
     
    	}
    J'espère que vous avez compris mon problème et que vous arriverez à m'aider.

    Merci par avance

  2. #2
    Membre chevronné Avatar de cmcmc
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 316
    Par défaut
    Bonjour,

    Pour la prochaine fois, le forum "langage" est mieux adapté à ce type de question que "Programmation et administration système". Essaie par ailleurs d'utiliser les balises (en particulier la balise CODE).

    Sauf erreur de ma part il manque la ligne
    AGmSSNQSISsPVLDAVPr_S11(Phospho);M3(Oxidation)_M3(Oxidation);S11(Phospho);R19(Label:13C(6)15N(4))
    dans ta partie "Exemple:".

    de plus la ligne
    AHLsENELEALEk_S4(Phospho)_S4(Phospho);K13(Label:13C(6)15N(2))
    est en double... Est-ce normal ?

    Moyennant cette correction, i.e. en prenant comme fichier d'entrée celiac.dat contenant
    AGTLSITEFADmLSGNAGGFrsr_S22(Phospho);M12(Oxidation)_M12(Oxidation);R21(Label:13C(6)15N(4));S22(Phospho);R23(Label:13C(6)15N(4))
    AGmSSNQSISsPVLDAVPR_S11(Phospho);M3(Oxidation)_M3(Oxidation);S11(Phospho)
    AHLsENELEALEk_S4(Phospho)_S4(Phospho);K13(Label:13C(6)15N(2))
    AGAGmITQHSSNAsPINR_S14(Phospho);M5(Oxidation)_M5(Oxidation);S14(Phospho)
    AHLsENELEALEK_S4(Phospho)_S4(Phospho)
    AGTLSITEFADMLSGNAGGFRsR_S22(Phospho)_S22(Phospho)
    AHLsENELEALEk_S4(Phospho)_S4(Phospho);K13(Label:13C(6)15N(2))
    AHLTVGQAAAGGsGNLLTER_S13(Phospho)_S13(Phospho)
    AHLTVGQAAAGGsGNLLTEr_S13(Phospho)_S13(Phospho);R20(Label:13C(6)15N(4))
    AGAGmITQHSSNAsPINr_S14(Phospho);M5(Oxidation)_M5(Oxidation);S14(Phospho);R18(Label:13C(6)15N(4))
    AGmSSNQSISsPVLDAVPr_S11(Phospho);M3(Oxidation)_M3(Oxidation);S11(Phospho);R19(Label:13C(6)15N(4))
    
    et avec le script celiac.pl suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    36
    37
    38
    39
    40
    41
    42
    43
    use strict;
    use warnings;
     
    my %unlabeled;
    my %labeled;
     
    # lecture du (ou des) fichier(s) contenant les séquences (marquées et non marquées). 
    while (defined(my $line = <>)) {
        $line =~ s/[\r\n]*$//;    
        next if $line =~ /^\s*$/;
        my ($cased_seq, $cased_mod1, $cased_mod2) = split /_/, $line;
        my ($lower_seq, $lower_mod1, $lower_mod2) = map { lc } ($cased_seq, $cased_mod1, $cased_mod2);
        # pour être indépendant de la casse on prend comme clé la version "en minuscules" de ${seq}_${mod1}
        my $key = $lower_seq . "_" . $lower_mod1;
        if ($lower_mod2 =~ /label/) {
    	# la séquence est marquée
    	warn "une sequence marquee existe deja pour la cle '$key'\n",
    	     "existante : $labeled{$key}\n",
    	     "courante  : $line\n" 
    		 if exists $labeled{$key};
    	$labeled{$key} = $line;
        } else {
    	# la séquence n'est pas marquée
    	warn "une sequence non marquee existe deja pour la cle '$key'\n",
    	     "existante : $unlabeled{$key}\n",
    	     "courante  : $line\n" 
    		 if exists $unlabeled{$key};
    	$unlabeled{$key} = $line;
        }
    }
     
    print "--> Sequences appariees:\n";
    for my $key (keys %unlabeled) {
        if (exists $labeled{$key}) {
    	print "$unlabeled{$key}\n";
    	print "$labeled{$key}\n";
    	delete $unlabeled{$key};
    	delete $labeled{$key};
        }
    }
    print "--> Sequences non appariees:\n";
    print "$_\n" for values(%unlabeled);
    print "$_\n" for values(%labeled);
    j'obtiens le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Taisha:~/perl/forum $ perl celiac.pl celiac.dat
    une sequence marquee existe deja pour la cle 'ahlsenelealek_s4(phospho)'
    existante : AHLsENELEALEk_S4(Phospho)_S4(Phospho);K13(Label:13C(6)15N(2))
    courante  : AHLsENELEALEk_S4(Phospho)_S4(Phospho);K13(Label:13C(6)15N(2))
    --> Sequences appariees:
    AHLTVGQAAAGGsGNLLTER_S13(Phospho)_S13(Phospho)
    AHLTVGQAAAGGsGNLLTEr_S13(Phospho)_S13(Phospho);R20(Label:13C(6)15N(4))
    AHLsENELEALEK_S4(Phospho)_S4(Phospho)
    AHLsENELEALEk_S4(Phospho)_S4(Phospho);K13(Label:13C(6)15N(2))
    AGmSSNQSISsPVLDAVPR_S11(Phospho);M3(Oxidation)_M3(Oxidation);S11(Phospho)
    AGmSSNQSISsPVLDAVPr_S11(Phospho);M3(Oxidation)_M3(Oxidation);S11(Phospho);R19(Label:13C(6)15N(4))
    AGAGmITQHSSNAsPINR_S14(Phospho);M5(Oxidation)_M5(Oxidation);S14(Phospho)
    AGAGmITQHSSNAsPINr_S14(Phospho);M5(Oxidation)_M5(Oxidation);S14(Phospho);R18(Label:13C(6)15N(4))
    --> Sequences non appariees:
    AGTLSITEFADMLSGNAGGFRsR_S22(Phospho)_S22(Phospho)
    AGTLSITEFADmLSGNAGGFrsr_S22(Phospho);M12(Oxidation)_M12(Oxidation);R21(Label:13C(6)15N(4));S22(Phospho);R23(Label:13C(6)15N(4))
    Taisha:~/perl/forum $
    qui semble faire ce que tu veux (au warning près...). Mais je ne suis pas certain de comprendre quel est ton problème avec Oxidation.

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Celiac, ton script fait un cas particulier des séquences contenant "oxydation", et comme le dit cmcmc, tu ne spécifies rien de particulier dans ta question à propos de cela.

    De manière plus générale : qu'attends-tu en résultat et comment lis-tu les fichiers de 8000 lignes ? lecture des fichiers comme si concaténés ? ou chaque fichier doit être traité séparément ? ou certains des fichiers ont des fonctions particulières ? ...
    Pour le résultat : que faire si plus de 2 séquences identiques sont trouvées ? Comment ordonner les séquences appairées : d'abord la séquence avec label, et ensuite là ou les autres ? l'inverse ? l'ordre du fichier d'origine ? ...

    La question pouvait aussi avoir sa place en "bio-informatique".

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 5
    Par défaut
    Bonsoir Philou,

    Effectivement, mon script n'arrivait pas à comparer les séquences contenant "oxydation". Je ne suis pas arrivée à trouver l'erreur/le problème. Le script de cmcmc fonctionne très bien et compare correctement ces séquences là.

    En résultat, j'attendais un premier groupe de séquences appariées : la séquence non marquée suivie en-dessous de la séquence identique marquée; et dans une deuxième groupe les séquences restantes non appariées.

    Oui, chaque fichier est lu et traité séparément. Un fichier représente une condition. Les fichiers n'ont pas de fonctions particulières.

    Pour obtenir les séquences précisées dans mon exemple, j'ai procédé à différentes étapes de concaténation afin d'avoir une organisation des différents éléments identiques. La machine m'a généré des infos dans des ordres complètement différents.

    Normalement, c'est impossible de trouver 2 séquences identiques. L'erreur dans l'exemple, c'est ma faute, erreur de copier/coller.

    Cmcmc a repondu à mon problème. Le tri est parfait.

    Merci pour votre réponse

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Citation Envoyé par celiac Voir le message
    Pour obtenir les séquences précisées dans mon exemple, j'ai procédé à différentes étapes de concaténation afin d'avoir une organisation des différents éléments identiques. La machine m'a généré des infos dans des ordres complètement différents.
    Il y avait peut-être quelque chose à faire dès cette étape de "concaténation" ? Ce programme était écrit en perl ?
    Normalement, c'est impossible de trouver 2 séquences identiques. L'erreur dans l'exemple, c'est ma faute, erreur de copier/coller.
    J'ai déjà travaillé sur des données biologiques, et pour tous les cas non nominaux que j'avais identifiés au préalable, "on" m'avais assuré qu'ils n'étaient pas possible. Pourtant, il s'est trouvé que la plupart du temps, ces cas existaient bien dans les données d'entrée et devaient être pris en considération. Je ne doute pas de ta bonne foi sur ce cas, mais personnellement, je mettrais toujours en doute ce genre de réponse, et je traiterai toujours ces cas comme des exceptions (par défaut, si l'utilisateur de définit pas de traitement particulier, alors ce sera des exceptions fatales).

    Bonne journée.

  6. #6
    Membre chevronné Avatar de cmcmc
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 316
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Il y avait peut-être quelque chose à faire dès cette étape de "concaténation" ? Ce programme était écrit en perl ?
    J'ai déjà travaillé sur des données biologiques, et pour tous les cas non nominaux que j'avais identifiés au préalable, "on" m'avais assuré qu'ils n'étaient pas possible. Pourtant, il s'est trouvé que la plupart du temps, ces cas existaient bien dans les données d'entrée et devaient être pris en considération. Je ne doute pas de ta bonne foi sur ce cas, mais personnellement, je mettrais toujours en doute ce genre de réponse, et je traiterai toujours ces cas comme des exceptions (par défaut, si l'utilisateur de définit pas de traitement particulier, alors ce sera des exceptions fatales).
    a priori assez d'accord, quoique je me demande si ça aurait vraiment de l'importance ici. Si les deux séquences (labellisée et non-labellisée) apparaissent à l'identique chacune plusieurs fois dans le fichier, on n'en retrouvera qu'une de chaque dans le résultat. Est-ce grave ? Ce qui poserait vraiment problème c'est le cas de séquences avec les mêmes "$seq_mod1" mais des $mod2 différents.

    Peut-être suffit-il de tester que le nombre de lignes produites est identique au nombre de lignes d'entrée (aux titres près), et si ce n'est pas le cas, d'inspecter les données d'entrée de plus près ?

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 5
    Par défaut
    Bonsoir cmcmc,

    Merci pour votre réponse. C'est super, le tri s'effectue exactement comme je le souhaitais.

    Merci beaucoup pour votre aide!

  8. #8
    Membre chevronné Avatar de cmcmc
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 316
    Par défaut
    Citation Envoyé par celiac Voir le message
    Bonsoir cmcmc,

    Merci pour votre réponse. C'est super, le tri s'effectue exactement comme je le souhaitais.

    Merci beaucoup pour votre aide!
    Bonjour Celia,

    je suis content pour toi. Je serai encore plus content si toi (et ton collègue ) vous assurez que vous comprenez comment le programme fonctionne

    Parce qu'il y a quand même quelques trucs dans ton script initial qui font dresser les cheveux sur la tête ...

    Si vous comprenez tout, tant mieux, et encore plus tant mieux si vous pouvez le réutiliser dans d'autres cas de figure. Mais si vous avez des doutes, n'hésitez pas à poser des questions, soit dans ce fil soit dans le forum "langage" qui comme je te le disais sera probablement plus approprié.

    Enfin n'oublie pas que toi seule peut marquer cette question comme résolue (ce qui ne t'empêche pas d'y revenir si tu as plus tard une question à poser).

    Bonne continuation

  9. #9
    Membre chevronné Avatar de cmcmc
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 316
    Par défaut
    Incidemment, je viens de mettre à jour (pour la troisième fois je crois) ma réponse initiale (ici). C'est une mise à jour mineure, mais comme une des précédente elle s'est avérée nécessaire suite à une erreur de copier/coller dans la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        if ($lower_mod2 =~ /label/) {
    	# la séquence est marquée
    	warn "une sequence marquee existe deja pour la cle '$key'\n",
    	     "existante : $labeled{$key}\n",
    	     "courante  : $line\n" 
    		 if exists $labeled{$key};
    	$labeled{$key} = $line;
        } else {
    	# la séquence n'est pas marquée
    	warn "une sequence non marquee existe deja pour la cle '$key'\n",
    	     "existante : $unlabeled{$key}\n",
    	     "courante  : $line\n" 
    		 if exists $unlabeled{$key};
    	$unlabeled{$key} = $line;
        }
    En fait le code ci-dessus ne me ressemble pas. Je l'ai délayé pour le rendre plus intelligible mais cela a produit tellement de duplications que quand j'ai voulu le nettoyer un peu (en introduisant la déclaration et l'initialisation de $key par exemple) j'ai oublié de propager certaines modifications. C'est une des raisons pour lesquelles j'essaie normalement de produire un code aussi DRY (Don't Repeat Yourself) que possible... Et le code que j'écrirais normalement sur ce problème est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    use strict;
    use warnings;
     
    my %unlabeled;
    my %labeled;
     
    while (<>) {
        my @lf = map { lc } split /_/;
        ($lf[2] =~ /label/ ? \%labeled : \%unlabeled)->{"$lf[0]_$lf[1]"} = $_ 
    }
     
    print "--> Sequences appariees:\n";
    for my $key (keys %unlabeled) {
        if (exists $labeled{$key}) {
    	print "$unlabeled{$key}";
    	print "$labeled{$key}";
    	delete $unlabeled{$key};
    	delete $labeled{$key};
        }
    }
    print "--> Sequences non appariees:\n";
    print for values(%unlabeled);
    print for values(%labeled);
    Petite question pour Célia : est-ce que le code ci-dessus t'aurait convenu, ou au contraire rebuté ? Est-ce que tu le comprends ?

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 5
    Par défaut
    Bonjour Cmcmc,

    J'ai quelques bases en programmation mais rien de très solide. En 2009, j'ai appris en cours à programmer en C, mais depuis, je n'ai jamais refait de programmation. Du coup, j'arrive à comprendre ton 1er code. Par contre ton 2ème code est beaucoup plus difficile à comprendre. Il me semble que l'essentiel de ce code est dans la ligne 9 qui commence par ($lf[2] = .......... Je ne comprends pas du tout cette ligne.

    Concernant ton 1er code, peux-tu stp m'expliquer que signifie exactement chaque symbole de "s/[\r\n]*$//"?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'un peu d'aide
    Par Alexis35 dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 17/01/2012, 16h24
  2. Besoin d'un peu d'aide sur les pointeurs.
    Par techz dans le forum Débuter
    Réponses: 9
    Dernier message: 18/04/2009, 16h32
  3. strcpy () besoin d'un peu d'aide
    Par Panaméen dans le forum C
    Réponses: 12
    Dernier message: 03/12/2007, 09h05
  4. besoin d'un peu d'aide
    Par etpaflechien dans le forum Langage
    Réponses: 1
    Dernier message: 13/04/2006, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo