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 :

[Probléme] Script copie dans un fichier


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Par défaut [Probléme] Script copie dans un fichier
    Voici mon probleme
    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
    open(FIC,'>test') || die("Pb d’ouverture\n");   
        print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
        print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
        print FIC ("<ficAlimMENESR>\n");
    #comment inséré mon print (ou printf si il faut) dans ma boucle pour y retrouver tout les informations merci
        while(my $r = $request->fetchrow_hashref) {
            print "  <modifyRequest>\n";
            foreach (sort keys(%$r)) 
            {
                print "    <$_>$r->{$_}</$_>\n";
            }
            print "  </modifyRequest>\n";
        }
    
       print FIC ("<ficAlimMENESR>\n");
    close(FIC);

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    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 606
    Par défaut
    Citation Envoyé par maloute80 Voir le message
    Voici mon probleme
    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
    open(FIC,'>test') || die("Pb d’ouverture\n");   
        print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
        print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
        print FIC ("<ficAlimMENESR>\n");
    #comment inséré mon print (ou printf si il faut) dans ma boucle pour y retrouver tout les informations merci
        while(my $r = $request->fetchrow_hashref) {
            print "  <modifyRequest>\n";
            foreach (sort keys(%$r)) 
            {
                print "    <$_>$r->{$_}</$_>\n";
            }
            print "  </modifyRequest>\n";
        }
    
       print FIC ("<ficAlimMENESR>\n");
    close(FIC);
    Bonjour. Ta question manque de clarté. Que cherches-tu à faire ???

    Pour le peu que j'ai compris, la soluce se trouve là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while(my $r = $request->fetchrow_hashref) {
            print FIC "  <modifyRequest>\n";
            foreach (sort keys(%$r)) 
            {
                print FIC "    <$_>$r->{$_}</$_>\n";
            }
            print FIC "  </modifyRequest>\n";
        }
    Mais ça me semble tellement évident que ça ne doit pas répondre à ta question.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Par défaut
    Code :

    while(my $r = $request->fetchrow_hashref) {
    print FIC " <modifyRequest>\n";
    foreach (sort keys(%$r))
    {
    print FIC " <$_>$r->{$_}</$_>\n";
    }
    print FIC " </modifyRequest>\n";
    }
    Merci bcq (est oui tout simple mais je ne peut pas lancer mon script sans être sur )

    voila mon autre probleme qui est apparut je voudrai savoir comment lui demander affichier la premier info de ma boucle car ce que je fait ne m'affiche rien
    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
     
    open(FIC,'>test') || die("Pb d’ouverture\n");   
     
            print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
            print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
            print FIC ("<ficAlimMENESR>\n\n");
     
        while(my $r = $request->fetchrow_hashref) 
        {
            print FIC ("  <addRequest>\n");
            print FIC ("    <operationalAttributes>\n");
            print FIC ('      <attr name="categoriePersonne">' . "\n");
            print FIC ("        <value>Boucher</value>\n");
            print FIC ("      </attr>\n");
            print FIC ("    </operationalAttributes>\n");
            print FIC ("    <identifier>\n");
    #$r->{$1} pour afficher la premier ligne seulement mais rien :'( 
            print FIC ("      <id>$r->{$1}</id>\n");
            print FIC ("    </identifier>\n");
            print FIC ("    <attributes>\n");
        foreach (sort keys(%$r)) 
         {
            print FIC ("      <$_>$r->{$_}</$_>\n");
         }
            print FIC ("    </attributes>\n");
            print FIC ("  </addRequest>\n\n");
        }
     
        print FIC ("</ficAlimMENESR>\n");
     
    close(FIC);
    D'avance merci.

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    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 606
    Par défaut
    Citation Envoyé par maloute80 Voir le message
    Merci bcq (est oui tout simple mais je ne peut pas lancer mon script sans être sur )

    voila mon autre probleme qui est apparut je voudrai savoir comment lui demander affichier la premier info de ma boucle car ce que je fait ne m'affiche rien
    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
     
    open(FIC,'>test') || die("Pb d’ouverture\n");   
     
            print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
            print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
            print FIC ("<ficAlimMENESR>\n\n");
     
        while(my $r = $request->fetchrow_hashref) 
        {
            print FIC ("  <addRequest>\n");
            print FIC ("    <operationalAttributes>\n");
            print FIC ('      <attr name="categoriePersonne">' . "\n");
            print FIC ("        <value>Boucher</value>\n");
            print FIC ("      </attr>\n");
            print FIC ("    </operationalAttributes>\n");
            print FIC ("    <identifier>\n");
    #$r->{$1} pour afficher la premier ligne seulement mais rien :'( 
            print FIC ("      <id>$r->{$1}</id>\n");
            print FIC ("    </identifier>\n");
            print FIC ("    <attributes>\n");
        foreach (sort keys(%$r)) 
         {
            print FIC ("      <$_>$r->{$_}</$_>\n");
         }
            print FIC ("    </attributes>\n");
            print FIC ("  </addRequest>\n\n");
        }
     
        print FIC ("</ficAlimMENESR>\n");
     
    close(FIC);
    D'avance merci.
    Si j'ai bien compris, tu veux juste afficher le 1er enregistrement ?

    Solution :

    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
     
    my $enregistrement_trouve = 0;
     
    open(FIC,'>test') || die("Pb d’ouverture\n");   
     
            print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
            print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
            print FIC ("<ficAlimMENESR>\n\n");
     
        while(my $r = $request->fetchrow_hashref) 
        {
            print FIC ("  <addRequest>\n");
            print FIC ("    <operationalAttributes>\n");
            print FIC ('      <attr name="categoriePersonne">' . "\n");
            print FIC ("        <value>Boucher</value>\n");
            print FIC ("      </attr>\n");
            print FIC ("    </operationalAttributes>\n");
            print FIC ("    <identifier>\n");
    #$r->{$1} pour afficher la premier ligne seulement mais rien :'( 
            if (! $enregistrement_trouve)
            {
                    print FIC ("      <id>$r->{$_}</id>\n");
                    ++$enregistrement_trouve;
            }
            print FIC ("    </identifier>\n");
            print FIC ("    <attributes>\n");
        foreach (sort keys(%$r)) 
         {
            print FIC ("      <$_>$r->{$_}</$_>\n");
         }
            print FIC ("    </attributes>\n");
            print FIC ("  </addRequest>\n\n");
        }
     
        print FIC ("</ficAlimMENESR>\n");
     
    close(FIC);
    Sinon, je te suggère (si tu ne le fais pas encore) d'utiliser 2 packages Perl fort pratiques : strict et warnings.

    Le premier t'oblige à déclarer tes variables dans le script Perl (avec my comme dans mon exemple pour la variable $enregistrement_trouve) et le second t'affiche les erreurs que le compilateur de Perl aura trouvé dans ton script durant son exécution (si toutefois il s'exécute). Redirige (c'est un exemple) le canal d'erreur STDERR dans un fichier log, ainsi tu auras les erreurs conservées bien au chaud dans un log.

    Pour te montrer le truc :

    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
     
    use strict;
    use warnings;
     
    open(STDERR, ">mon_log.log") or die("Pb pour écrire le fichier log : $!\n");
     
    my $enregistrement_trouve = 0;
     
    open(FIC,'>test') || die("Pb d’ouverture\n");   
     
            print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
            print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
            print FIC ("<ficAlimMENESR>\n\n");
     
        while(my $r = $request->fetchrow_hashref) 
        {
            print FIC ("  <addRequest>\n");
            print FIC ("    <operationalAttributes>\n");
            print FIC ('      <attr name="categoriePersonne">' . "\n");
            print FIC ("        <value>Boucher</value>\n");
            print FIC ("      </attr>\n");
            print FIC ("    </operationalAttributes>\n");
            print FIC ("    <identifier>\n");
    #$r->{$1} pour afficher la premier ligne seulement mais rien :'( 
            if (! $enregistrement_trouve)
            {
                    print FIC ("      <id>$r->{$_}</id>\n");
                    ++$enregistrement_trouve;
            }
            print FIC ("    </identifier>\n");
            print FIC ("    <attributes>\n");
        foreach (sort keys(%$r)) 
         {
            print FIC ("      <$_>$r->{$_}</$_>\n");
         }
            print FIC ("    </attributes>\n");
            print FIC ("  </addRequest>\n\n");
        }
     
        print FIC ("</ficAlimMENESR>\n");
     
    close(FIC);

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Par défaut
    Tout d'abord merci pour le fichier de log c'est hyper pratique
    en revanche dans le code suivant que tu ma fournit
    il me met des erreurs dans le fichier log et la variable ne saffiche pas
    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
     
    use strict;
    use warnings;
     
    open(STDERR, ">mon_log.log") or die("Pb pour écrire le fichier log : $!\n");
     
    my $enregistrement_trouve = 0;
     
    open(FIC,'>test') || die("Pb d’ouverture\n");   
     
            print FIC ('<?xml version="1.0" encoding="UTF-8"?>' . "\n");
            print FIC ("<!DOCTYPE ficAlimMENESR SYSTEM \"ficAlimMENESR.dtd\">\n");
            print FIC ("<ficAlimMENESR>\n\n");
     
        while(my $r = $request->fetchrow_hashref) 
        {
            print FIC ("  <addRequest>\n");
            print FIC ("    <operationalAttributes>\n");
            print FIC ('      <attr name="categoriePersonne">' . "\n");
            print FIC ("        <value>Boucher</value>\n");
            print FIC ("      </attr>\n");
            print FIC ("    </operationalAttributes>\n");
            print FIC ("    <identifier>\n");
            if (! $enregistrement_trouve)
            {
    #Toujours rien en résultat
    #ligne 132 en desous
                    print FIC ("      <id>$r->{$_}</id>\n");
                    ++$enregistrement_trouve;
            }
            print FIC ("    </identifier>\n");
            print FIC ("    <attributes>\n");
        foreach (sort keys(%$r)) 
         {
    #ligne 139 en desous
            print FIC ("      <$_>$r->{$_}</$_>\n");
         }
            print FIC ("    </attributes>\n");
            print FIC ("  </addRequest>\n\n");
        }
     
        print FIC ("</ficAlimMENESR>\n");
     
    close(FIC);
    Erreurs logs
    Use of uninitialized value in hash element at ./sybase.pl line 132.
    Use of uninitialized value in concatenation (.) or string at ./sybase.pl line 132.
    Use of uninitialized value in concatenation (.) or string at ./sybase.pl line 139.
    Use of uninitialized value in concatenation (.) or string at ./sybase.pl line 139.

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    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 606
    Par défaut
    Le problème se situe sur les lignes 132 et 139 de ton script.

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

Discussions similaires

  1. [VB Script] Problème de copie dans répertoire
    Par ben_harper dans le forum VBScript
    Réponses: 3
    Dernier message: 19/06/2006, 10h25
  2. Problème de lecture dans un fichier xml
    Par Pyra dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2005, 00h13
  3. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  4. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28
  5. Réponses: 2
    Dernier message: 01/06/2004, 12h47

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