lire fichier de conf texte en interprétant les variable shell
Bonjour,
j'ai un problème dans l'un de mes scripts perl :
le principe:
un script lit un fichier de configuration texte , et charge les paramètres contenu dans le bloc "NOM_SCRIPT" dans une liste .
La plupart de ces variables contiennent du texte, mais certaines peuvent contenir des variables d'environnement shell
Exemple de bloc :
Code:
1 2 3 4 5 6 7
|
DEBUT NOM_SCRIPT
# Un commentaire
VAL1 = XXXXX
VAL2= XXXXXXX
VAL3 = $LOG/essai.txt
FIN NOM_SCRIPT |
$LOG étant une variable shell contenant par exemple /tmp
Le code qui fonctionne, mais que je ne trouve pas très propre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
my %liste;
## on recupère les lignes ds le bloc
if ((/\s*DEBUT NOM_SCRIPT\s*$/ ... /\s*FIN NOM_SCRIPT\s*$/) =~ /^\d+(?<!^1)$/) {
next if /\s*#/;
if ( /\s*(\S+)\s*=\s*(\S+)\s*/){
chomp($liste{$1}=`echo $2`);
}
}
return %liste; |
Je n'ai pas trouvé mieux que de faire un "echo" de chaque valeur pour obtenir la valeur désiré.
Mais je trouve cela limite sachant que je dois avoir 1% des valeurs du fichier qui contiennent des variables shells.
j'ai essayé de modifier mon fichier de conf pour mettre des $ENV au lieu de $ pour tester, mais là j'obtient
Code:
1 2
|
print $titre{VAL3} ==> $ENV{LOG}/essai.txt au lieu de /tmp/essai.txt |
Je n'arrive pas à lui faire remplacer $ENV par la valeur de la variable.
Auriez-vous une idée qui me passerait du echo ?