salut,
J'aurai aimé savoir si il etait possible avec perl de verifier la presence de variable d'environnement ? ou de voir si ces variables ne sont pas vide ?
Je parle des variables qui se trouve dans le .profile
Merci.
salut,
J'aurai aimé savoir si il etait possible avec perl de verifier la presence de variable d'environnement ? ou de voir si ces variables ne sont pas vide ?
Je parle des variables qui se trouve dans le .profile
Merci.
Ca convient ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if (exists $ENV{PATH}) then { print "Le PATH vaut".$ENV{PATH}."\n"; }
merci
j'ai fait cela, j'ai juste enlever le then que t'avais mis par oubli
en faite $ENV c'est un variable deja defini, on a juste a lui mettre parametre le nom de la variable d'environement;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #!/usr/bin/perl -w use strict; sub var_exist { my $varenv; $varenv='PATH'; if (exists $ENV{$varenv}) { print "Le PATH vaut".$ENV{$varenv}."\n"; exit 1; } } var_exist;
Est ce mieux d'utiliser defined au lieu de exists ?
et pour tester si ma variable d'environement est à vide et n'estp as renseigné j'ai juste à rajouter un elseif comme ceci ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 elsif( $ENV{$varenv} eq '' ) { print "Le PATH est vide\n"; exit 1 }
si je souhaite passé $varenv en parametre
comment faire ?
j'ai essayer cela
mais sa ne fonctionne et pourtant dans la doc il precise bien qu'il est possible de mettre des parametre au fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 sub var_exist { my $varenv; if (exists $ENV{$varenv}) { print "Le ".$varenv." vaut ".$ENV{$varenv}."\n"; exit 1; } } var_exist LANG;
Bareword "LANG" not allowed while "strict subs" in use at ./envi.pl line 16.
Execution of ./envi.pl aborted due to compilation errors.
pour les parametres j'ai compris
il faut utiliser $_[0]
et appeler le parametre en quote dans des parenthese
mafonction ("monparam")
j'essai d'appeler deux fois la fonction
comme ceci
et le probleme est que je n'ai que la langue qui s'affiche et non le path.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 &var_exist ("LANG"); &var_exist ("PATH");
et pourtant quand je lance une fois la fonction pour le path elle m'affiche correctement le path
Envoyé par donny
Je ne devrais pas pratique plusieurs langages à la fois.
Le hachage @ENV existe et est initialisé par Perl avec le contenu de toutes les variables d'environnement, indexées par leur nom. On utilise donc le nom comme index d'accès.Envoyé par donny
Non, surtout pas !Envoyé par donny
Exists vérifie si un élément existe dans une table de hachage. C'est tout.
Defined ne vérifie pas si l'élément existe, mais si sa valeur est définie, ce qui est différent car s'il n'existe pas, il est créé avec une valeur indéfinie.
Ainsi, l'appel à defined crée l'élément dans le hachage, ce qui n'est pas le but recherché.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 @toto=(); print "$toto{titi} existe\n" if (exists $toto{titi}); print "$toto{titi} est défini\n" if (defined $toto{titi}); print "$toto{titi} existe maintenant\n" if (exists $toto{titi});
Il faut, dans ce cas, enchainer deux tests :Envoyé par donny
- Le premier pour savoir si la variable existe.
- Le second, seulement dans le cas où la variable existe, pour savoir si elle est définie.
donc en faite il vaut mieux tester si la variable n'est pas defined (! defined)donc si elle n'est pas defined elle n'existe pas et faire un autre test en dessous qui verifie si la variable contient une valeur (eq '') comme sa si la variable n'est pas defined on ne cherche pas à verifier si elle contient une valeur.
et pour appeler deux fois la fonction ce n'est pas possible ?
Envoyé par donny
Tu ne m'as pas bien lu.
Si tu testes à "not defined", tu crée automatiquement la variable avec une valeur indéfinie.
Il faut tester à "exists", et ENSUITE s'intéresser à son contenu (avec des defined ou des eq, c'est comme tu veux).
Ca ne devrait poser aucun problème.Envoyé par donny
Le code de ta fonction doit être incorrect. Montre-nous ton code actuel ...
Partager