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

  FORUM HardWare.fr
  Programmation
  Perl

  Question encapsulation debutant en Perl [HELP]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Question encapsulation debutant en Perl [HELP]

n°1982023
chuckboy2
Posté le 08-04-2010 à 15:01:22  profilanswer
 

Bonjour à tous,
 
Question simple pour un débutant en Perl.
 
J'essais à partir d'un script principal (main.pl) d'appeler un script d'environnement (SetEnv.pl). Mon problème c'est que mes variables d'environnement définit dans SetEnv.pl ne sont pas visible dans mon script principal.
 
Main.pl
`perl "SetEnv.pl"`;
 
SetEnv.pl
$ENV{'ENCRYPT_PATH'}="E:\Code\S5_2\Script\Encrypt";
 
Quelqu'un peut m'aider je n'arrive pas à trouver.
Merci

mood
Publicité
Posté le 08-04-2010 à 15:01:22  profilanswer
 

n°1982077
gilou
Modérateur
Modzilla
Posté le 08-04-2010 à 16:22:21  profilanswer
 

Ça n'a rien a voir avec perl, cela, c'est juste une question de shell.
Sous Windows, vous pouvez utiliser le module Win32::Env
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1982083
Elmoricq
Modérateur
Posté le 08-04-2010 à 16:29:02  profilanswer
 

Pour expliquer le comportement constaté rapidement : quand tu appelles une commande avec les backquotes (alt.gr 7), tu crées un processus fils. Ici, ce processus fils est un script perl qui modifie les variables d'environnement, mais ces modifications ne seront appliquées que pour CE processus fils, et SES fils à lui.
Une fois l'appel terminé, le processus fils en question est détruit. Quant au processus père, il n'a jamais vu aucun changement de variable d'environnement. Nada, que dalle, zilch.

 

Conclusion : tu ne pourras jamais modifier les variables d'environnement en appelant une autre commande perl de cette manière. Le plus simple : crée un petit module (ou passe par Win32::Env comme le suggère gilou, je ne connais pas ce module :o)


Message édité par Elmoricq le 08-04-2010 à 16:31:14
n°1982147
gilou
Modérateur
Modzilla
Posté le 08-04-2010 à 19:04:13  profilanswer
 

C'est un petit module tout simple, la doc en est ici: http://search.cpan.org/~ROWAA/Win3 [...] n32/Env.pm
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1982608
chuckboy2
Posté le 09-04-2010 à 15:54:08  profilanswer
 

Résolut
Merci mais j'ai trouvé un moyen de contourner ce problème.
 
Fils SetEnv.pl
print("ENCRYPT_PASSWORD dnBtY3VzdG0=\n" );
 
Père Main.pl
chomp( my @Cmds = `perl "SetEnv.pl"` );
foreach my $Cmds(@Cmds) {  
   my @ListArg = split(/ /,$Cmds);
   $ENV{$ListArg[0]}="$ListArg[1]";
}
 
C'est pas ce qui a de plus sexy mais sa me suffit amplement.
Je vais quand même jeter un oeil sur le Win32::Env mais comme mes scripts sont utilisés sur Windows et sur Unix...

n°1982698
gilou
Modérateur
Modzilla
Posté le 09-04-2010 à 21:40:22  profilanswer
 

Pour unix, il y a le module Env::C
Et tu peux écrire du code dépendant de l'OS en utilisant la variable $^O qui vaut toujours MSWin32 sous Windows
 
Donc ça pourrait commencer par
 
if ($^O eq 'MSWin32') {
use Win32::Env;
.....
} else {
use Env::C;
....
}
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

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

  Question encapsulation debutant en Perl [HELP]

 

Sujets relatifs
snake help meQuestion de SESSION ...
Comparaison de chaine de caractères / Question à la conSessions,HELP!
Debutant besoin aidePerl - Fichier Texte Sed
video qualité mediocre... helpExclure des dossiers dans un xcopy (batch windows)
Perl - Tableau associatif Hash[Divers][Gtk] Application avec Gtk (débutant)
Plus de sujets relatifs à : Question encapsulation debutant en Perl [HELP]


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