#!/usr/bin/perl -w #ouverture d'un fichier en position 0 dans cygwin béta 20, référencé ensuite par FILE open (FILE, "$ARGV[0]"); #ouverture d'un fichier en écriture, si ce fichier existait auparavant : l'ancien contenu est écrasé. open (OUT, ">resultat.txt"); # L'utilisateur tape le nombre de mots qu'il veut avant l'occurrence recherchée print "Combien souhaitez-vous de mots avant l'occurrence ?"; # le nombre de mots sera stocké par la variable: my $gauche my $gauche = ; #on enlève les retours à la ligne s'il y en a chomp $gauche; # L'utilisateur tape le nombre de mots qu'il veut après l'occurrence recherchée print "Combien souhaitez-vous de mots après l'occurrence ?"; # le nombre de mots sera stocker par une variable: my $droite my $droite = ; #on enlève les retours à la ligne s'il y en a chomp $droite; # On commence à établir la forme du fichier au format HTML en sortie. On crée un tableau print OUT "\n Etude de structures syntaxiques\n"; print OUT "\n \n"; # on définit une liste de mots qui est stockée dans un tableau appelé @listemots @listemots=("grimace", "contact", "soins", "tonique", "calme"); # on continue à établir la forme du fichier au format HTML en sortie. On complète le tableau. print OUT ""; #while est une boucle qui signifie "tant que". #A l'intérieur des parenthèse, on a la condition qui est de lire toutes les lignes du fichier. Ces lignes sont stockés dans la variable $ligne #Tant que je peux lire des lignes, je le fais... la condition étant remplie, on peut donc rentrer à l'intérieur de la boucle. while ($ligne=) { #on enlève les retours de ligne chomp($ligne); for ($ligne =~ /$listemots[$ligne]\/[A-Z]+/g) { print OUT ""; print OUT ""; # il faut maintenant récupérer la forme d l'occurrence # $& permet de récupérer l'occurrence print OUT ""; #on compte maintenant les mots du contexte droit print OUT ""; } } # On écrit la fin du tableau et du fichier html print OUT "
CONTEXTE GAUCHE DE L'OCCURRENCEOCCURRENCECONTEXTE DROIT DE L'OCCURRENCE
"; # $` recupère le contexte gauche et on le stocke dans une variable appelé my $avant my $avant = $`; # $' recupère le contexte droit et on le stocke dans une variable appelé my $apres my $apres = $'; # on compte maintenant les mots du contexte gauche @contgauche = split(/ /, $avant); $nbgauche = $#contgauche-$gauche+1; if ($nbgauche>=0) { $nb = $nbgauche; while ($nb<$#contgauche+1) { print OUT "$contgauche[$nb] "; $nb=$nb+1; } } else { print OUT "$`"; } print OUT "$&"; @contdroit = split(/ /, $apres); $nbdroite = $#contdroit-$droite+1; if ($nbdroite>=0) { $nbre = $nbdroite; while ($nbre<$#contdroit+1) { print OUT "$contdroit[$nbre] "; $nbre=$nbre+1; } } else { print OUT "$'"; } print OUT "
\n \n \n"; # on ferme le fichier en lecture close FILE; #on feme le fichier en sortie close OUT;