exécution d'un fichier qui se situe en dehors du script pl

exécution d'un fichier qui se situe en dehors du script pl - Perl - Programmation

Marsh Posté le 30-11-2002 à 22:35:27    

Salut...
 
J'ai réalisé un script pl. J'ai défini des variables à l'extérieur de ce script, dans d'autres fichiers, et je voudrais les charger à un certain moment. Comment cela est-il faisable ?


---------------
si t déçu d'être dessous, tu iras dessus kom ça tu seras plus déçu ni dessous... Si tu piges pas c ke t saoul, c sûr...
Reply

Marsh Posté le 30-11-2002 à 22:35:27   

Reply

Marsh Posté le 30-11-2002 à 22:38:03    

require 'lefichier', ca le fait pas ?

Reply

Marsh Posté le 30-11-2002 à 23:13:14    

lorill a écrit a écrit :

require 'lefichier', ca le fait pas ?



c presque ça... Sauf que j'arrive pas à lire le contenu de la variable dans le script principal...


---------------
si t déçu d'être dessous, tu iras dessus kom ça tu seras plus déçu ni dessous... Si tu piges pas c ke t saoul, c sûr...
Reply

Marsh Posté le 30-11-2002 à 23:27:44    

en fait il me faudrait l'équivalent de la fonction . en bash...


---------------
si t déçu d'être dessous, tu iras dessus kom ça tu seras plus déçu ni dessous... Si tu piges pas c ke t saoul, c sûr...
Reply

Marsh Posté le 30-11-2002 à 23:32:07    

je connais pas vraiment perl... je lancais ca un peu au hasard.
en python je ferais "from lefichier import *", je me suis dit que comme le require de perl etait equivalent a l'import de python ca irait peut-etre. désolé  [:sinclaire]

Reply

Marsh Posté le 30-11-2002 à 23:34:23    

lorill a écrit a écrit :

je connais pas vraiment perl... je lancais ca un peu au hasard.
en python je ferais "from lefichier import *", je me suis dit que comme le require de perl etait equivalent a l'import de python ca irait peut-etre. désolé  [:sinclaire]  



je te remercie car ça marche presk... juste une subtilité à résoudre... les autres, une idée ?


---------------
si t déçu d'être dessous, tu iras dessus kom ça tu seras plus déçu ni dessous... Si tu piges pas c ke t saoul, c sûr...
Reply

Marsh Posté le 01-12-2002 à 12:12:04    

Pour tes var externes, je vois 2 solutions :
 
1) elles sont stockées, ligne par ligne dans un fichier ini :

Code :
  1. nom de var;valeur
  2. toto;1
  3. titi;34
  4. tata;48


dans ton programme Perl, tu te crée un hash qui récupère en tant que clés les noms de var et en tant que valeurs ce qu'elles contiennent :

Code :
  1. use strict;
  2. my %Variable;
  3. open(INI, "fichier.ini" ) or die();
  4. while(<INI> ) {
  5.     chomp();
  6.     if (/^(.+);(.+)$) {
  7.         $Variable{$1} = $2;
  8.     } else {
  9.         print "fic ini, ligne $. non correcte\n";
  10.     }
  11. }
  12. close(INI);
  13. foreach(keys %Variable) {
  14.     print "clé = $_, contenu = $Variable{$_}\n";
  15. }


 
2) solution 2, passer par un package dans lequel tu crées toutes tes variables et leurs valeurs :

Code :
  1. use package;    # ton package
  2. print "$package::toto\n"; # concerne la variable $toto du package


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 01-12-2002 à 12:14:41    

Pour un programme qui créait des répertoires + sous-répertoires pour un poste utilisateur au boulot, je sais que j'étais passé par la méthode 1) et ça marchait très très bien
 
Avec un ch'tit code comme celui décrit + haut, je récupérais tous les chemins de tous les répertoires et roule ma poule  :D


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 01-12-2002 à 23:50:13    

g trouvé :
 

Code :
  1. eval scalar `cat mon_fichier`;

 
Merci bcp sinon  :hello:


---------------
si t déçu d'être dessous, tu iras dessus kom ça tu seras plus déçu ni dessous... Si tu piges pas c ke t saoul, c sûr...
Reply

Sujets relatifs:

Leave a Replay

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