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

Langage Perl Discussion :

soucis d'enregistrement de donnees


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Par défaut soucis d'enregistrement de donnees
    voila j'utilise un tableau et une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     for ($i=0; $i<=$long ; $i++)
            { $tst=~/^([^\t]*)\t[^\t]*\t([^\t]*)\t[^\t]*\t[^\t]*\t.*/;
          print $tst;
           if ($Var eq $2)
              {$groupe = $1;
             print G "Gpe\t$gpe\n";}}
    Var etant defini au dessus en My $var comment faire pour que cela passe car rien ne se passe . merci

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Tu ne donnes aucun détail sur le contenu de $tst, pas plus que de $Var...
    De plus l'indentation est pour le moins étrange (si on peut appeler ça une indentation).
    Nous n'en savons pas assez pour t'aider.

    --
    Jedaï

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Par défaut
    oui c vrai $tst c une ligne d'un tableau excel $var une valeur chiffre et lettre contenu dans une case de mon tableau je voudrai enregistrer la 3eme case de chaque ligne la comparer a ma variable $var si c la meme enregistrer la
    1 case de la meme ligne voila! Et pour l'indentation le copier coller a bien marcher mais je me suis rendu compte que mon programme ete tres mal indenter donc je vais y remedier pour d'autre details n'hesitez pas merci

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Citation Envoyé par bassejc
    voila j'utilise un tableau et une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     for ($i=0; $i<=$long ; $i++)
            { $tst=~/^([^\t]*)\t[^\t]*\t([^\t]*)\t[^\t]*\t[^\t]*\t.*/;
          print $tst;
           if ($Var eq $2)
              {$groupe = $1;
             print G "Gpe\t$gpe\n";}}
    Var etant defini au dessus en My $var comment faire pour que cela passe car rien ne se passe . merci
    Déjà, j'essaie de présenter ton code réindenté comme il faut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for ($i = 0; $i <= $long; $i++)
    {
        $tst =~ /^([^\t]*)\t[^\t]*\t([^\t]*)\t[^\t]*\t[^\t]*\t.*/;
        print $tst;
        if ($Var eq $2)
        {
            $groupe = $1;
            print G "Gpe\t$gpe\n";
        }
    }
    Maintenant, quand tu dis qu'il ne se passe rien, ça signifie que la séquence du print G "Gpe\t$gpe\n"; ne se fait pas ?

    Je te conseillerais de réorganiser ton code comme suit :

    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
     
    for ($i = 0; $i <= $long; $i++)
    {
        if ($tst =~ /^([^\t]*)\t[^\t]*\t([^\t]*)\t[^\t]*\t[^\t]*\t.*/)
        {
            print $tst;
            if ($Var eq $2)
            {
                $groupe = $1;
                print G "Gpe\t$gpe\n";
            }
            else
            {
                print "\$Var ($Var) différent de \$2 ($2)\n";
            }
        }
        else
        {
            print "\$tst non matché\n";
        }
    }
    Ca te permettra de voir si ta RegExp fait ce que tu attend d'elle.

    De plus, je te conseillerais d'ajouter à la première ligne de ton script (shebang) le flag -w afin d'avoir plus de retours d'erreurs ou d'avertissements du compilateur Perl lorsqu'il analyse, compile et exécute ton script.

    Dernière chose : ta boucle for boucle sur quoi exactement ? Parce que là, ta variable $tst est toujours la même qui est utilisée à chaque passage dans ta boucle.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Par défaut
    ma boucle for boucle sur une variable qui je pense doit avancer dans un fichier type tableau de la ligne i a long qui est la longueur total du tableau
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    #! /usr/bin/perl
     
    use strict;
     
    open (G, ">resu.txt");
    open (E, "./holoe.data") or die " impossible d'ouvrir le fichier holoe\n"; 
    open (F, "./M.data/M.data5");
    my $compteur =0;
    my $gpe ="";
    my @hml =<E>;
    my $gpe = "";
    my $i=0;
    my $test="";
    my $long =@hml;
     
     
     
     
    open (DATA, "Mdata/M.data5") or die "Can't open file M.data5 $!";
     
    my @mdata = <DATA>;
     
     
    chomp(@mdata);
     
    my $mdata = join("\t", @mdata);
     
    my @ge=split(/\/\//, $mdata);
     
    my $ge ="";
    foreach $ge(@ge)
      {
    	if($ge ne "")
                 {
    		chomp($ge);
    		$ge =~ s/'/\\'/g;
    		$_ = $ge; 
    		my ($unigId) = /ID\s+([^\t]*)/;
    		my ($geNam) = /TITLE\s+([^\t]*)/;
    		my ($geSym) = /GENE\s+([^\t]*)/;
    		my ($Var) = /LOCUSLINK\s+([^\t]*)/;
    		my ($sequences) = /ID\s+.*?(SEQUENCE.*)$/;
    		print "$unigId, $geSym, $Var\n";
    		if ($Var ne "")
                       {print G "variable1 \t$Var\n"; #mon prog tourne jusque la!
     
                          for ($i=0; $i<=$long ; $i++)
                               {                                                                                                        $test=~/^([^\t]*)\t[^\t]*\t([^\t]*)\t[^\t]*\t[^\t]*\t[^\t]*\t.*/;
                                print $test;
                                if ($Var eq $2)
                                    {
                                     $gpe = $1;
                                     print G "Gpe\t$gpe\n";
                                     }
                                }
                         }
                }
      }
    voila le but : ouvrir un fichier le couper en notant la Var qui contient une valeur de type chaine puis ouvrir un tableau de 6 colonnes et charcher dans la 3eme colonne si la valeur y existe si oui renvoyer la valeur de la 1 case de la ligne correspondante . voila mais ca march pas du tout je suis debutant et la je galere beaucoup.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Par défaut
    et pour ton code que tu ma donner maintenant il me marque plein plein plein de test non match voila je suis impatient d'avoir de l'aide !

  7. #7
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Dans ton code, un truc me saute aux yeux, il manque ~ accolé au = pour les affectations suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    my ($unigId) = /ID\s+([^\t]*)/;
    my ($geNam) = /TITLE\s+([^\t]*)/;
    my ($geSym) = /GENE\s+([^\t]*)/;
    my ($Var) = /LOCUSLINK\s+([^\t]*)/;
    my ($sequences) = /ID\s+.*?(SEQUENCE.*)$/;

  8. #8
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    2 choses

    Active le flag -w à ta 1ère ligne -> #! /usr/bin/perl -w
    Ca rendra le compilo plus bavard et il te signalera davantage d'erreur

    Redirige vers un fichier le canal STDERR. Ca te fera un fichier log traçant justement les erreurs de compilations ou d'exécution
    open(STDERR, ">stderr.log") or die ("création stderr.log erreur : $!\n");

    Et vois ce qui se passe.

    J'ai repéré (et signalé) qq erreurs syntaxiques, peut être que d'autres se cachent dans ton script.

Discussions similaires

  1. enregistrement des donnees
    Par nesrinebm dans le forum Général Java
    Réponses: 4
    Dernier message: 17/02/2009, 21h18
  2. enregistrement de donnees dans la base
    Par Djclo dans le forum ASP.NET
    Réponses: 2
    Dernier message: 19/12/2008, 12h03
  3. [XML] lire un fichier en xml et enregistrer les donnees dans MySQL
    Par nath-0-0 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 22/08/2006, 14h06
  4. enregistrer une donnee dans un fichier txt
    Par zorglub88 dans le forum MFC
    Réponses: 33
    Dernier message: 27/01/2006, 15h13
  5. enregistrement de donnees d'une table a une autre
    Par tibiurs dans le forum Access
    Réponses: 6
    Dernier message: 20/12/2005, 17h21

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