OVH Cloud OVH Cloud

Variable d'environnement

5 réponses
Avatar
romario
Salut a tous,

je souhaite recuperer dans un script Perl une variable d'environnement. Je
creer ma variable dans un terminal :
export PINGPROCESS=1
J'obtient bien le resultat si je fais echo $PINGPROCESS.

Par contre dans mon script Perl j'obtient rien lorsque j'ecrit :

my $testenv=$ENV{PINGPROCESS};
print "\n***** $testenv ******\n";

IDEM si je fais

my $testenv = `echo $PINGPROCESS`;
print "\n***** $testenv ******\n";

Par contre, ca marche avec les autres variables du systeme $HOME, $PATH, ...
print "$ENV{HOME}" fonctionne tres bien.

Voila mon probleme, je pense est lié a la creation des variables qui sont
peut-etre propre au shell et pas calculé par Perl ???

Merci de vos reponses

5 réponses

Avatar
Paul Gaborit
À (at) Fri, 30 Jun 2006 11:18:13 +0200,
"romario" écrivait (wrote):
je souhaite recuperer dans un script Perl une variable d'environnement. Je
creer ma variable dans un terminal :
export PINGPROCESS=1
J'obtient bien le resultat si je fais echo $PINGPROCESS.


my $testenv=$ENV{PINGPROCESS};
print "n***** $testenv ******n";

IDEM si je fais

my $testenv = `echo $PINGPROCESS`;
print "n***** $testenv ******n";


Si vous lancez le script Perl depuis le shell dans lequel vous avez
créé la variable d'environnement, ça devrait marcher...

En Perl, pour voir toutes les variables d'environnement, vous pouvez
faire :

foreach my $env (keys %ENV) {
print "$env=$ENV{$env}n";
}

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
romario
Effectivement ça marche au sein du meme shell.

J'aimerais que ça marche d'une maniere plus globale car mon script
communique avec d'autre via cette variable d'environnement.

Y a t-il un moyen d'obtenir le resultat souhaité ?

Merci
Avatar
Nicolas George
"romario" wrote in message <44a4f2c3$0$27311$:
J'aimerais que ça marche d'une maniere plus globale car mon script
communique avec d'autre via cette variable d'environnement.

Y a t-il un moyen d'obtenir le resultat souhaité ?


Non, les variables d'environnement ne fonctionnent pas comme ça, et ne
servent pas à ça.

Avatar
romario
OK merci

J'ai opté pour un fichier de config commun a tous les scripts. C'est pas ce
qu'il y a de plus simple mais ça le fait.

A+


"Nicolas George" <nicolas$ a écrit dans le message de
news: e82slh$5pf$
"romario" wrote in message <44a4f2c3$0$27311$:
J'aimerais que ça marche d'une maniere plus globale car mon script
communique avec d'autre via cette variable d'environnement.

Y a t-il un moyen d'obtenir le resultat souhaité ?


Non, les variables d'environnement ne fonctionnent pas comme ça, et ne
servent pas à ça.



Avatar
Paul Gaborit
À (at) Fri, 30 Jun 2006 11:45:39 +0200,
"romario" écrivait (wrote):
Effectivement ça marche au sein du meme shell.

J'aimerais que ça marche d'une maniere plus globale car mon script
communique avec d'autre via cette variable d'environnement.

Y a t-il un moyen d'obtenir le resultat souhaité ?


Les variables d'environnement sont gérées par héritage : les processus
fils héritent de leur père.

Pour tout autre type de communication, il faut utiliser un autre moyen
que les variables d'environnement.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>