Bonjour à tous,

J'écris un parseur de fichiers (ou depuis STDIN) PHP afin d'y extraire les fonctions utilisées pour enfin vérifier qu'elles ne sont pas obsolètes.
Donc le script est fonctionnel à ceci près qu'il matche toutes les fonctions, même celles définies par l'utilisateur (du coup pas moyen de vérifier en ligne si elles sont obsolètes...).
De plus je ne souhaite pas matcher les fonctions d'une classe tel que $this->function ou (...)->fonction.

Voici la regexp qui trouve toutes les fonctions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
my $regexp   = '([\w]{4,})[\s]{0,}\(.*\)';
Dans un premier temps pour ne pas sélectionner les fonctions d'une classe, j'ai testé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
my $regexp   = '((?!>)[\w]{4,})[\s]{0,}\(.*\)';
Alors je crois bien ne pas avoir bien saisi le fonctionnement de (?!), pourtant j'ai bien lu http://search.cpan.org/~rgarcia/perl-5.9.4/pod/perlretut.pod

J'ai réussi en trichant un peu, je matche ausi les signes - et > puis je procède à une 2ème vérification, càd :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
my ($ff) = $_ =~ m/$regexp/i;
if ( defined $ff && $ff !~ m/>/ ) {
(...)
}
Idem il faudrait que je ne matche pas quand la fonction est précédée de "function ".

Y a-t-il une solution en une seule regexp ?
Merci d'avance