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 :

Débutant: Gestion des références


Sujet :

Langage Perl

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Débutant: Gestion des références
    Bonjour,

    Je suis débutant en Perl et je dois gerer la mise en forme d'un fichier texte en recuperant des infos dans un autre fichiers. J'essaie d'utiliser en vain des references et j'avoue que ma compréhension du fonctionnement est loin d'etre acquise. Bref j'ai tout de meme ecrit du code qui fait la moitié du travail et je vais essayer d'expliquer ce que je fais :

    @ligne_out[N] contenant "PARAMETRE_N $_paramN" est un tableau qui represente les lignes que je vais recopier dans le fichier mis en forme. Je cherche a ce que quand je recupere $_paramN dans le fichier source non mis en forme cela soit changé directement dans ce que contient @ligne_out[N].



    $param1 = \$_param1; #j 'essaie d'utiliser les references
    $param2 = \$_param2;
    $param3 = \$_param3;
    ........


    @ligne_out[1] = "PARAMETRE_1 $_param1";# chaque ligne du fichier de sortie avec le nom du paramètre ajouté avant la valeur de celui ci
    @ligne_out[2] = "PARAMETRE_2 $_param2";
    @ligne_out[3] = "PARAMETRE_3 $_param3";


    open (FIN, fichier_in.txt);

    $ligne_fic_entre = 0;
    #je recupere chaque du fichier ne comportant que les valeurs
    while ($line = <FIN>)
    {
    if ($ligne_fic_entre == 1)
    {
    $param1 = $line;
    #je fais un print pour voir si la valeur du paramètre à changée dans @ligne_out[]
    print <STDOUT>, "1ere ligne OK ? @ligne_out[1] fin\n\n";
    }
    if ($ligne_fic_entre == 2)
    {
    $param2 = $line;
    print <STDOUT>, "2eme ligne OK ? @ligne_out[2] fin\n\n";
    }
    ...........

    $ligne_fic_entre++
    }

    En gros cela affiche tres bien
    PARAM1
    PARAM2
    .....
    mais pas

    PARAM1 valeur de param1
    PARAM2 valeur de param2
    .....

    En plus de cela j'aurai bien aimé integrer qqchose du type

    @param[$ligne_fic_entre] = $line;

    print <STDOUT>, "$ligne_fic_entre eme ligne OK ? @ligne_out[$ligne_fic_entre] fin\n\n";

    pour eviter tous ces if pour chaque ligne

    Voici donc mon souci tres clairement j'ai besoin d'un bon conseil sur ce point, en attendant vos suggestions je me replonge dans la doc du perl !


    Merci d'avance

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 208
    Points
    208
    Par défaut
    Salut,
    Citation Envoyé par todobene
    Je suis débutant en Perl et je dois gerer la mise en forme d'un fichier texte en recuperant des infos dans un autre fichiers. J'essaie d'utiliser en vain des references et j'avoue que ma compréhension du fonctionnement est loin d'etre acquise. Bref j'ai tout de meme ecrit du code qui fait la moitié du travail et je vais essayer d'expliquer ce que je fais :
    C'est bien que tu lis la doc et tu essaies de t'en sortir.
    Cependant pour un coup de main je préfère d'avoir les données en entrée (en fait c'est indispensable) unless données sensibles et aussi ce que tu veux obtenir en sortie, je suppose que c'est ça :
    PARAM1 valeur de param1
    PARAM2 valeur de param2
    lami20j
    --
    lami20j

  3. #3
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    je pense avoir compris ta question (m'a fallu un moment, c'est pas très clair ).
    Pour résumer tu veux ouvrir un fichier et afficher le contenu formaté à la place du contenu non formaté, c'est ca ? Et tu te bases sur un tableau contenu les 2 parties (formaté / non formaté) ?
    Tu peux peut-être déjà utiliser un hash pour tes données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my %data = ('PARAMETRE1' => $_param1,
                      'PARAMETRE2' => $_param2,
                      'PARAMETRE3' => $_param3);
    comme ca, lorsque tu ouvres ton fichier, tu peux faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    open (FIN, fichier_in.txt) or die "pb d'ouverture : $!\n";
    while (<FIN>) {
            print $data{$_};
            print $_ if $data{$_} eq '';
    }
    Est-ce quelque chose dans ce style que tu cherches à faire ?

    edit : au fait, que viennent faire les références dans l'histoire ? j'ai pas saisi...

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/07/2007, 11h50
  2. Gestion des références
    Par Kloun dans le forum Contribuez
    Réponses: 8
    Dernier message: 14/06/2007, 08h03
  3. [VBA]Gestion des références
    Par Kloun dans le forum Access
    Réponses: 1
    Dernier message: 05/04/2007, 19h05
  4. [débutant] gestion des exceptions dans web.xml
    Par jgaslain dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 06/02/2007, 09h46
  5. [Débutant]Gestion des évènements souris
    Par bubu251 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 06/10/2006, 11h49

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