Interprétation de variable dans un fichier

Interprétation de variable dans un fichier - Perl - Programmation

Marsh Posté le 25-07-2008 à 12:06:10    

plzzzzzzzzzzzzzzzz aider moi

 

Bonjour,

 

Je me demande lla solution a un petite problem. Je recupere  un  chemin a partir d un fichier text par exemple /home/$TECHNO

 

Avec $TECHNO une variable declarer a l interieur de mon programme l'erreur c'est que il me donne pas le contenu de $TECHNo mais il la recopier tel qu il est

 


  voici le code d appel

 


   sub options2
    {
      open (CFG, @_[0]) || die "Cannot open config file $!";  ## avec  @_[0] est un fichier donner en parametre  
                                                                                   ##lors de l appel

 

     foreach (<CFG> )
              {

 

              if(/^\$PATH_DKVERSION/)
                {
                  @t13=split(/=/,$_);

 

                 $PATH_DKVERSION="$t13[1]";

 

                  print "$PATH_DKVERSION \n";
   

 

                    }
                   }
       close CFG;
                   
     }

 


Dans le fichier text j ai la ligne suivant :    $PATH_DKVERSION=/home/imgana/$TECHNO/$DK=

 

lors de l execution il me donne le chemin tel qu il est   /home/imgana/$TECHNO/$DK   moi ce que je veux c'est plus de /home/imgana il doit recuperer le contenu de mes variables  $TECHNO/$DK

 

Svp  aide moi.

 


reponde par mail  <effacé par Elmoricq>


Message édité par Elmoricq le 25-07-2008 à 12:08:59
Reply

Marsh Posté le 25-07-2008 à 12:06:10   

Reply

Marsh Posté le 25-07-2008 à 12:09:55    

Poste édité, découpé, et doublons fermés.
 
Merci de ne pas créer des tas de topics pour ton problème, et de faire des efforts sur l'orthographe. De plus, les réponses se font sur le forum, pour pouvoir aider ceux qui rencontreraient un problème similaire.

Reply

Marsh Posté le 25-07-2008 à 12:28:28    

qu'est ce que tu dis exactement

Reply

Marsh Posté le 25-07-2008 à 12:46:33    

Il te dis juste que ca sert à rien de créer 50 topics avec la même question.
Et si tu persistes tu risques de te prendre un ban
et aussi les réponses doivent être faites dans ce topic et pas autrement

Reply

Marsh Posté le 25-07-2008 à 13:36:17    

Code :
  1. use Config::File;
  2. my $config_hash = Config::File::read_config_file($configuration_file);

Message cité 1 fois
Message édité par anapajari le 25-07-2008 à 13:36:26

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 25-07-2008 à 13:40:37    

anouar_st a écrit :

qu'est ce que tu dis exactement

 

Tu as créé plusieurs fois le même topic en fait, donc j'ai dû fermer les deux autres pour ne pas faire doublon.
De plus, on ne répond pas par mail pour deux raisons :

  • HFr est parsé par google donc, potentiellement, tu peux subir du spam à foison en laissant ton adresse mail dans un post
  • Un forum est, par définition, collaboratif : une réponse apportée à quelqu'un peut servir à d'autres personnes ayant le même problème


Sinon, pour ton problème, il suffit d'une regexp pour demander à PERL d'interpréter ta variable.
Je te propose ce snippet, tu ne devrais pas avoir de mal à l'adapter à ton besoin :

Code :
  1. #! /usr/bin/perl
  2.  
  3. use strict;
  4.  
  5. my $foobar = '/home/$USER';
  6.  
  7. print "Variable non interprétée, comme dans ton problème donc : $foobar\n";
  8.  
  9. # but de la regexp : récupère tout ce qu'il y a après un '$' jusqu'à trouver un / ou une fin de ligne
  10. # la seconde partie interprète avec le hashage %ENV le contenu de la variable récupérée dans $1
  11. # $2 contient quant à elle / ou <fin de ligne>
  12. $foobar =~ s#\$(.*?)(/|$)#$ENV{$1}$2#g;
  13.  
  14. print "Variable interprétée : $foobar\n";
 

À l'exécution ça donne ça :

$ perl taiste.pl
Variable non interprétée, comme dans ton problème donc : /home/$USER
Variable interprétée : /home/Elmoricq
$

 

Plus d'information ici sur les regexp : http://perldoc.perl.org/perlre.html
Et pour le hâchage %ENV : http://perldoc.perl.org/perlvar.html (chercher %ENV dans la page)


Message édité par Elmoricq le 25-07-2008 à 13:51:42
Reply

Marsh Posté le 25-07-2008 à 13:49:14    

anapajari a écrit :

Code :
  1. use Config::File;
  2. my $config_hash = Config::File::read_config_file($configuration_file);


 

J'connaissais pas mais, en même temps, j'ai pas ce module d'installé, et c'est la croix et la bannière pour ajouter un module PERL chez nous (sécurité, tests, etc) :D

 

Mais ça a l'air pas mal du tout :jap:


Message édité par Elmoricq le 25-07-2008 à 13:49:39
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed