Forum Programmation.perl source shell

Posté par  (site web personnel) .
Étiquettes : aucune
0
13
avr.
2007
bonjour à tous,

je migre actuellement des scripts en /bin/bash vers du Perl.

ma problématique est la suivante :
dans tous les scripts en /bin/bash j'ai une première ligne qui me permet d'appeler un fichier de configuration via la notion de source (dot 'nom du fichier de config' )

ex:

#!/bin/bash

. /etc/mon_appli/appli.conf

avec dans /etc/mon_appli/appli.conf des variables mais surtout des instructions du genre :
umask 'u=rw,g=rw,o=r' ou bien
export PATH=/usr/local/bin:/usr/local/sbin:$MYAPPLI_HOME/bin:$PATH

le problème est que je veux faire cohabiter ce mécanisme lié au /bin/bash et pouvoir récupérer également mes variables et mon contexte dans mes futurs scripts en Perl.

avec Env::Bash j'ai bien réussi à récupérer mes variables mais pas à retrouver mon contexte PATH ou umask par exemple.

je ne veux pas redéfinir PATH et umask dans mes scripts Perl... bien évidemment.

comment faire ?

merci d'avance pour votre aide précieuse.
  • # modification ligne de commande

    Posté par  (site web personnel) . Évalué à 2.

    Pour migrer en douceur je pense que le plus simple est au départ de simplement modifier la ligne de lancement de tes scripts, genre:
    sh /etc/mon_appli/appli.conf && perl /blabla/tonscript.pl
    Les variables d'environnement et les autres modifications comme umask devraient ainsi être utilisées par le script perl.
  • # solution hors script Perl

    Posté par  (site web personnel) . Évalué à 1.

    C'est une solution effectivement mais je dois également pouvoir lancer mes scripts Perl de façon indépendante.

    Je crois que je vais wrapper mes scripts Perl dans un script /bin/bash.


    #!/bin/bash

    . /etc/mon_appli/appli.conf

    perl -w mon_script.pl
  • # un p'tit sub

    Posté par  (site web personnel) . Évalué à -1.

    si tu as deja tes variables mais qu'il ne te manque que les export, tu peux peut-etre ecrire une petite fonction du style :

    sub get_export{
     my $file=shift;
     open(FILE,$file) or die "ouverture de $file : $!\n";
     while(<FILE>){
       if($_=~m/^export (.*)=(.*)$/){
         $ENV{$1}=$2;
       }
     }
     close(FILE);
    }

    # appel de la fonction :
    get_export ("/etc/mon_appli/appli.conf");


    code non teste mais l'idee est la ...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.