Salut,

J'ai des difficultés à trouver une regexp. Je veux parser un fichier de configuration dont certaines lignes ont le format suivant (espaces en début de lignes, espaces ou tabulation(s) entre le premier mot et la chaîne de caractères) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
  host1    'cpu disk'
  host2    'cpu disk mem'
  host3    'disk'
Le but est d'extraire le mot en début de ligne et la chaîne de caractères entre quotes. A des fins de test, j'étais parti sur ce code (pour le moment, je n'ai pas mis les parenthèses destinées à l'extraction) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
open CONF, '<./config_file';
 
while(<CONF>)
{
    if(m/\s+\w\s+'(\w\s?)*'/) { print $_; }
}
 
close CONF;
Rien ne s'affiche.

J'ai décidé de procéder étape par étape, en testant ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
  if(m/^\s+\w/) { print $_; }
Toutes les lignes souhaitées s'affichent. Par contre, si je rajoute simplement ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
  if(m/^\s+\w\s+/) { print $_; }
ou même ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
  if(m/^\s+\w\s/) { print $_; }
plus rien ne s'affiche... Je ne maîtrise pas les expressions régulières mais jusqu'ici, ça devrait fonctionner... Si une âme charitable pouvait éclairer ma lanterne...