Recherche d'un champ a identifier en Perl
oliviernouhi
Messages postés
82
Date d'inscription
Statut
Membre
Dernière intervention
-
oliviernouhi Messages postés 82 Date d'inscription Statut Membre Dernière intervention -
oliviernouhi Messages postés 82 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis entrain de faire un petit parser.
Mais j'ai des options que je n'arrive pas faire.
Je voudrais que mon programme me dise si ma fonction est utilisé.
Donc en gros si je rencontre "nomFonction (" ou "nomFonction("
Je suis un peu perdu et je n'y arrive pas.
Voici mon fichier en entrée :
Le resultat devrait être :
Voici mon de code :
Merci d'avance pour votre aide
Je suis entrain de faire un petit parser.
Mais j'ai des options que je n'arrive pas faire.
Je voudrais que mon programme me dise si ma fonction est utilisé.
Donc en gros si je rencontre "nomFonction (" ou "nomFonction("
Je suis un peu perdu et je n'y arrive pas.
Voici mon fichier en entrée :
Form Window: frmOUTACC01 Dialog Box: dlgNotes Function: ForceFocusLigne Actions ForceFocusLigne(par1, par2) Function: ListenFocus Actions Set mlTxt = Notestbl.colTxt Form Window: frmWACFF03 Dialog Box: dlgVarin Function: DemarrNum Actions Set nRowNum = SalTblSetRow ( Testb2, Testb2.nPosRow ) Function: ActionScript Actions ActionScript (par1, par2)
Le resultat devrait être :
La form frmOUTACC01 contient les fonctions :ForceFocusLigne, ListenFocus .Fonctions non utilisées : ListenFocus La form frmWACFF03 contient les fonctions :DemarrNum, ActionScript .Fonctions non utilisées : DemarrNum
Voici mon de code :
# !usr/bin/perl -w use strict; use warnings; my $cpt = 0; print "Debut du traitement\n"; open FICHIER, '<', "X7all2.apt" or die("E/S : $!\n"); open ECRIRE, '>', "parser.txt" or die("Erreur de création de parser.txt"); #tant qu'il y a des lignes dans mon fichier my %MesDonnes; # variable de type table de hachage my $fenetre; while ( my $ligne = <FICHIER> ) { $cpt++; chomp $ligne; # suppression des blanc en fin de ligne # Si la ligne contient "Function" OU si la ligne est vide if ( $ligne =~ m/Form Window:\s*(.+)/i ) { $fenetre = $1; # Le nom de la fenetre servira de clé du hash. En valeur, on # stocke une référence de tableau qui sera remplit par la suite $MesDonnes{$fenetre} = []; } if ( $ligne =~ m/\s+Function: \s*(.+)/i and defined $fenetre) { # On rajoute dans le tableau anonyme le nom de la fonction. if ( $ligne !=~ m/\s+Fuction( \s*(.+)/i ) || ( $ligne !=~ m/\s+Fuction ( \s*(.+)/i ){ $no_use_fonction =~ $1; push( @{ $MesDonnes{$fenetre} }, $1 ); # push prend en argument un tableau et une liste de valeurs scalaires } } print "Le Parseur a parcourus $cpt lignes\n"; # Parcour du hash pour afficher son contenu foreach my $fenetre ( sort keys %MesDonnes ) { # Calcul du nombre de valeur dans le tableau anonyme associé à la fenetre my $nombre_fonction = scalar @{ $MesDonnes{$fenetre} }; if ( $nombre_fonction != 0 ) { print ECRIRE "La form $fenetre contient les fonctions :", join( ', ', @{ $MesDonnes{$fenetre} } ), "\n"; } } #fermeture des fichiers close FICHIER; close ECRIRE; print "Fin du traitement";
Merci d'avance pour votre aide
A voir également:
- Recherche d'un champ a identifier en Perl
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Identifier appareil avec adresse mac - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Recherche de pairs utorrent ✓ - Forum Téléchargement