IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[langage] Création de variable d'environnements


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 7
    Points
    7
    Par défaut [langage] Création de variable d'environnements
    Bonjour à tous.

    Voilà je travaille sous Unix et j'aimerai savoir comment il est possible de créer un variable d'environnement de linux via un script.

    J'ai déjà essayé pas mal de truc mais, soit la variable ne dure que le temps du script, soit elle ne s'initialise pas..

    Maintenant peut être que c po possible..

    Je vous remercie d'avance.

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ENV{nomdetavariable} = valeur
    [/code]

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    mais c bien ce ke g fai cher ami...

    mais ca marche po..

    et je comprend po...

    Disons ke ca marche mais ke pour le script
    kan celui ci est fini, et ke je fait sous le pinguoin et ben ca me met rien...

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    He bien, cher ami, c'est que ton programme Perl s'éxecute dans une instance de shell différente de celle ou tu retournes après la fin de l'exécution.

    C'est la meme chose si tu fais un export $PATH=... dans un shell, que tu ouvres un autre shell et tape echo $PATH : la variable n'a pas changé.

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    AAAAAAAhhhhhhhhh ok.

    ben c po cool ca..

    sinon g essayé autre chose.
    G créé un fichier exécutable (nommé temp) tout ce kil y a de plus bête et g mis dedans
    (vous noterez le niveau avancé de cette ligne... )
    et donc après, dans mon script je lance une ligne ki permet d'exécuter ce programme.
    mais bizarrement le compilateur interprète même ce kil y dans le fichier temp. J'aurai cru qu'il laisserai l'interprétation de ce fichier à l'OS...

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    En fait, cela ne change rien.
    Ton script perl s'exécute dans un shell fils.
    tout ce que tu vas lancer à partir de ce shell fils sera également lancé dans ce shell (ou dans un autre shell fils), mais pas dans le shell père.

    Donc ta variable ne sera pas mis à jour pour tout le système.

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 7
    Points
    7
    Par défaut


    donc si je comprend bien c po possible :

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    mais en fait il y a mieux

    chose ke g oublié de préciser

    , il me dit ke c une variable inconnue...

    là je pige vraiment po

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    essaye

  10. #10
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    il me met sh: =EEEE: is not an identifier
    ca crain du boudin...

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    au temps pour moi, c'est bien Une solution, si ton script Perl ne fait que mettre à jour une variable d'environnement est de faire un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    prog.pl :
     
    #!/usr/bin/perl
    use strict
    print "export toto=valeur";
    puis, dans ton shell
    C'est une idée.
    Dis moi si ça fonctionne

  12. #12
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    youhouu

    ca marche...

    mais po dans mon script...

    en effet g fai un petit script de test et c bon
    par contre kan je le fai sur mon script ca me met...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/bin/ksh: syntax error: '(' unexpected
    sachant ke dans mon script il y a bien la ligne lui indiquant le bon interpreteur a utiliser...

    je vais tout péterrrrrrrr

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Tu peux mettre ton bout de code qui ne marche pas pour qu'on regarde ?

  14. #14
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    a un moment g un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      if(...)
      {
        `. ./nomdufichier`;
      }
    où nomdufichier contiendrai un truc du genre

    au milieu de centaines dotre lignes...

    et je vien de m'apercevoir ke ta méthode du print ne pe po marcher car dans mon script g plein de trucs à afficher. avec ta méthode plus rien s'afficherai et meme pire le pinguoin croirai ke ce sont des lignes de commandes.

    enfin bref ta méthode reste kan meme bonne mais po dans mon cas.

    oui oui je sai je sui chiant désolé....

  15. #15
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Autre approche :

    Pourquoi as tu besoin de redéfinir une variable d'environnement ?

  16. #16
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    ben en fait c TRES utile..
    en fait , c un script qui va permettre ou non l'execution d'un autre programme via cette variable...

    et ouai je sai ca crain du boudin...

  17. #17
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Tu ne peux pas lancer le programme à partir de Perl sans passer par cette variable ?

    En ajoutant un paramètres à ton programme par exemple ?

  18. #18
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    ben en fait, étant donné que cette variable est directement liée à certaines informations que je récupère dans mon script, c po possible de passer par un otre prog.

    D'autant plus que mon script ne doit faire qu'un seul fichier, je ne pe po repartir les fonctions dans différents fichiers...

  19. #19
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    J'ai plusieurs scripts Perl qui bossent en commun et qui ont besoin les uns les autres de certaines variables. Chez moi, ces variables sont stockés dans un hash, lequel renferme une bonne dizaine de répertoires.

    Pour éviter de me prendre le chou avec des créations de variables d'environnement, j'ai utilisé un fichier DBM tout simplement. Dans mon fichier DBM, il y a juste un hash dont les valeurs sont mes dossiers.

    Chacun de mes scripts lit ce fichier DBM, en récupèrent le hash et tout baigne, pas besoin de créer de variables d'environnement

    Regarde dans perlfunc du côté des fonctions dbmopen( ) et dbmclose( ), c'est tout simple à utiliser. A noter que ces fonctions sont désormais remplacées respectivement pas tie( ) et untie( ) mais les "vieilles" marchent encore et sont (à mon goùt) nettement plus simples à utiliser. Et si tu n'as pas besoin de stocker des milliers de variables, alors un fichier DBM c'est pile poil ce qu'il te faut.

    Exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    use DB_File; # ATTENTION : plusieurs lib existent !!!
     
    my %ENV;    # récupère tes variables dans le fichier DBM
     
    dbmopen(%DBM, "mon_fichier_DBM") or die "Can't open DBM file: $!";
    %ENV = %DMB;
    dbmclose(%DBM);
    Ca, c'est pour récupérer tes variables.

    Pour créer le fichier DBM :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    use DB_File; # ATTENTION : plusieurs lib existent !!!
     
    dbmopen(%DBM, "mon_fichier_DBM",0666) or die "Can't create DBM file: $!";
    $DBM{VAR1} = "toto";
    $DBM{VAR2} = "pouet";
    $DBM{VAR3} = "truc"; # etc. etc.
    dbmclose(%DBM);

  20. #20
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Arioch
    Chacun de mes scripts lit ce fichier DBM, en récupèrent le hash et tout baigne, pas besoin de créer de variables d'environnement
    Mais voila, komme par hasard j'ai un problème (fo ke j'arrete ou je vai me faire lapider a force d'être chiant ).

    Le truc c ke l'application ki se lance apres le script, et ben je n'ai aucune prise dessu (je pe po la modifier d'un yota) et elle utilise la variable d'environnement ke je souhaite créer. Arioch, j'aurai pu utiliser ta méthode si j'avai pu modifier l'application ki se lance aprés mais ce n'est po le cas...

    En tout cas merci bcp pour le mal ke tu t donné (a toi ossi mon petit hasop... )

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [langage] Recupération variables d'environnement
    Par Ludo167 dans le forum Langage
    Réponses: 2
    Dernier message: 19/07/2004, 14h48
  2. [langage] Comportement étrange d'une variable
    Par Spaz dans le forum Langage
    Réponses: 6
    Dernier message: 23/04/2004, 11h29
  3. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31
  4. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21
  5. Réponses: 4
    Dernier message: 18/07/2002, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo