Recherche d'un champ a identifier en Perl
oliviernouhi
Messages postés
86
Statut
Membre
-
oliviernouhi Messages postés 86 Statut Membre -
oliviernouhi Messages postés 86 Statut Membre -
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
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Identifier appareil avec adresse mac - Guide
- Identifier un numéro de gsm belgique ✓ - Forum Opérateurs & Réseaux mobiles