Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2424 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Passage de variable d'un script a un autre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] Passage de variable d'un script a un autre

n°849977
natwyn
liberer les kiwis
Posté le 14-09-2004 à 15:10:42  profilanswer
 

Salut,  
 
j'essais d'ecrire un script generique qui configure les variables d'environnement du script passé en argument.
 
Pour ce faire j'ai lu qu'en modifiant le hash special %ENV, c'etait possible, mais ca marche pas:
 
 
1° script: start.pl
 

Code :
  1. # script initialisant l'environnement
  2. ### modules ###
  3. use File::Spec;
  4. $cftexscript = "C:\\Documentations\\CFT\\INDUS_PERL";
  5. $ENV{'cftenvoi'} = "G:\\cft00\\envoi";
  6. # -------------------------------------------
  7. #  Lancement de la ligne de commande
  8. # -------------------------------------------
  9. if (not defined $ARGV[0]){
  10.       # Si pas d'arguments, on affiche les variables d'environnement
  11.       while(($clef,$valeur) = each %ENV){
  12.           print "$clef=$valeur \n";
  13.       }
  14. }else{
  15.       # sinon, on lance le script passé en argument
  16.       my $nom_script = File::Spec->catfile("$cftexscript", "@ARGV" );
  17.       exec "$nom_script";


 
 
2° script: test.pl
 

Code :
  1. #!/usr/bin/perl
  2. print "cftenvoi= $cftenvoi\n";


 
 
quand j'execute:  start.pl test.pl
 
la variable $cftenvoi affichée par test.pl est vide, donc l'environnement n'est pas transmis  :(  :(  :(  
 
 
comment kifofaire plz ??? :heink:  
 
 
 
 


---------------
Les kiwis c'est bon! Mangez-en
mood
Publicité
Posté le 14-09-2004 à 15:10:42  profilanswer
 

n°849980
pospos
Posté le 14-09-2004 à 15:19:23  profilanswer
 

les variables d'environnement sons accessible avec $ENV{}, donc tu dois faire:
 
print $ENV{'cftenvoi'}
 
(et puis rajoute use strict; en haut de tes scripts, ca mettra tout de suit een evidence les problemes)

n°849984
natwyn
liberer les kiwis
Posté le 14-09-2004 à 15:26:32  profilanswer
 

j'ai essayé et ca marche pas.
 
Dans le script test.pl, j'ai fais un  
 

Code :
  1. print "cftenvoi = $ENV{'cftenvoi'} \n" ;


 
et ma variable est toujours vide


---------------
Les kiwis c'est bon! Mangez-en
n°849987
burgergold
5$? va chez l'diable!
Posté le 14-09-2004 à 15:28:37  profilanswer
 

faut aps faire un export ou un truc du genre?

n°849990
natwyn
liberer les kiwis
Posté le 14-09-2004 à 15:32:01  profilanswer
 

en shell oui, mais la j'ai rien qui y ressemble  :??:


---------------
Les kiwis c'est bon! Mangez-en
n°849993
burgergold
5$? va chez l'diable!
Posté le 14-09-2004 à 15:35:35  profilanswer
 


bin c'est le même principe
 
tu lances ton premier script dans un "shell perl"
 tu déclare ta variable d'env
 tu lance le 2e script dans un nouveau shell perl
  pouf t'a les variables d'environnement par défaut d'un "shell perl"


 
perso jvois pas pk tu veux utiliser des variables d'environnements au lieu de les passer en paramètre au script que pour tes autres

n°849998
natwyn
liberer les kiwis
Posté le 14-09-2004 à 15:40:39  profilanswer
 

ce que tu decris est exactement le code que j'ai ecris et qui marche pas  :D  
 
Je peux pas les asser en parametres car je prevois d'en initialiser un gros paquet, et que je veux pas m'amuser a recuperer les variables dans tout les scripts qui utiliseront le start.pl. :non:  
 
De plus, j'ai deja des arguements qui sont passé au script start: il s'agit du script a lancé avec ses arguments.


---------------
Les kiwis c'est bon! Mangez-en
n°850009
burgergold
5$? va chez l'diable!
Posté le 14-09-2004 à 15:45:45  profilanswer
 

natwyn a écrit :

ce que tu decris est exactement le code que j'ai ecris et qui marche pas  :D  


 
c'est ce que je dis, c'est possiblement logique que ca ne fonctionne pas pour cette raison
 
lorsque tu lances quelques choses dans un nouveau shell, si tu n'as pas exporté tes variables d'environnements, elle ne seront pas dans le nouveau shell
 
si tu trouves que c'est trop de cassage de tête pour les paramètres, utilise Getopt::Long (-option valeur) ou CGI (option=valeur)

n°850046
natwyn
liberer les kiwis
Posté le 14-09-2004 à 15:59:56  profilanswer
 

je suis d'accord, mais je sais pas comment faire.
 
Surtout que dans mon bouquin O'Reilly, ils disent:

Citation :

Les nouveaux processus créés heriterontgénéralement de leur parent, des variables d'environnement, du repertoire de travail en cours, des flux d'entrées, de sortie et d'erreur standard...


 
alors ? comment faire pour passer des variable du process pere au process fils ?


---------------
Les kiwis c'est bon! Mangez-en
n°850100
natwyn
liberer les kiwis
Posté le 14-09-2004 à 17:02:51  profilanswer
 

J'AI TROUVE !!!
 
dans le code que j'ai donné, je n'utilisais pas la fonction fork qui créé un process fils (donc avec transmission d'environnement). Ca ne peut pas marcher avec exec utilisé seul.
 
pour plus de simplicité, j'utilise maintenant la fonction system() qui créé directement un process fils a la place de exec().
 
mon script test.pl peut ensuite recuperer les variables dans %ENV.
 
merci de votre aide


---------------
Les kiwis c'est bon! Mangez-en
mood
Publicité
Posté le 14-09-2004 à 17:02:51  profilanswer
 

n°852118
matafan
Posté le 16-09-2004 à 21:38:51  profilanswer
 

Un processus ne peut pas modifier l'environnement de son parent. L'environnement est passe aux processus fils, c'est tout.

n°852819
pospos
Posté le 17-09-2004 à 17:56:58  profilanswer
 

et n'importe quelle variable le serait egalement


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Passage de variable d'un script a un autre

 

Sujets relatifs
[Recherche] Script php d'upload-effacer fichiersCherche un bon script simple pr newsletter
[Résolu] Passage de "paramêtres" entre pagesScript de News
tester le contenu d'une variableTrouver une page toute faite, un script ? Newbie inside !
[python] y'a moyen d'externaliser une variable ?Pb de portée de variable sur fichiers include
Recuperer le contenu d'un fichier en variablePassage de variable à un script perl en console ?
Plus de sujets relatifs à : [Perl] Passage de variable d'un script a un autre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR