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 :

lire fichier de conf texte en interprétant les variable shell


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 39
    Points
    39
    Par défaut lire fichier de conf texte en interprétant les variable shell
    Bonjour,

    j'ai un problème dans l'un de mes scripts perl :

    le principe:

    un script lit un fichier de configuration texte , et charge les paramètres contenu dans le bloc "NOM_SCRIPT" dans une liste .

    La plupart de ces variables contiennent du texte, mais certaines peuvent contenir des variables d'environnement shell

    Exemple de bloc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DEBUT NOM_SCRIPT
    # Un commentaire
    VAL1 = XXXXX
    VAL2= XXXXXXX
    VAL3 = $LOG/essai.txt
    FIN NOM_SCRIPT
    $LOG étant une variable shell contenant par exemple /tmp

    Le code qui fonctionne, mais que je ne trouve pas très propre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    my %liste;
    ## on recupère les lignes ds le bloc
     if ((/\s*DEBUT NOM_SCRIPT\s*$/ ... /\s*FIN NOM_SCRIPT\s*$/) =~ /^\d+(?<!^1)$/) {
     
          next if /\s*#/;
          if (  /\s*(\S+)\s*=\s*(\S+)\s*/){
              chomp($liste{$1}=`echo $2`);
         }
    }
     
    return %liste;
    Je n'ai pas trouvé mieux que de faire un "echo" de chaque valeur pour obtenir la valeur désiré.

    Mais je trouve cela limite sachant que je dois avoir 1% des valeurs du fichier qui contiennent des variables shells.

    j'ai essayé de modifier mon fichier de conf pour mettre des $ENV au lieu de $ pour tester, mais là j'obtient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print $titre{VAL3} ==> $ENV{LOG}/essai.txt au lieu de /tmp/essai.txt
    Je n'arrive pas à lui faire remplacer $ENV par la valeur de la variable.

    Auriez-vous une idée qui me passerait du echo ?

  2. #2
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par olwin Voir le message
    Auriez-vous une idée qui me passerait du echo ?
    Oui :
    --
    Jedaï

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par Jedai Voir le message
    Oui :
    --
    Jedaï


    Merci !
    Je n'y ai pas du tout pensé , alors que c'était si simple !
    Du coup j'ai ajouté le remplacement suivant pour pouvoir à la fois gérer le cas $LOG et ${LOG} et cela marche super !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s/\$\{?(\w+)\}?/$ENV{$1}/g;

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

Discussions similaires

  1. Lire fichier et y ajouter le contenu de variables
    Par wokba dans le forum Langage
    Réponses: 3
    Dernier message: 30/05/2010, 20h56
  2. Réponses: 3
    Dernier message: 25/04/2009, 14h26
  3. Texte différent selon les variables..
    Par the clairvoyant dans le forum Flash
    Réponses: 1
    Dernier message: 09/07/2007, 17h15
  4. lire un fichier texte et separer les colonnes
    Par turk93390 dans le forum Framework .NET
    Réponses: 2
    Dernier message: 29/12/2006, 13h20
  5. Réponses: 20
    Dernier message: 23/03/2006, 16h21

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