J'essaie de remplacer le texte d'un fichier source par la façon dont fonctionne le préprocesseur C. Mon approche consiste à analyser constantes et leurs valeurs et remplir un tableau de hachage avec eux. Mon problème est le suivant:Perl Regexes - Remplacement de certaines instances de correspondances
Dans le fichier source, j'ai:
#define CONSTANT 10
#define CONSTANT_PLUS_ONE CONSTANT + 1
J'utilise /^#define\s+(\w.*)\s+.*($key).*/
pour correspondre à la deuxième ligne , mais quand je remplacerai avec s/$2/$defines{$key}/
, sont remplacés deux cas de CONSTANT, à savoir
#define CONSTANT 10
#define 10_PLUS_ONE 10 + 1
Je suis quelque chose d'un novice Perl, donc je suis en espérant que quelqu'un peut me diriger dans la bonne direction, ou si je l'ai fait une manière flagrante erreur stupide.
Utilisez-vous/g dans votre regex de remplacement, mais en l'omettant dans votre question? –