#!/usr/bin/perl -w use locale; #ouverture d'un fichier en position 0 dans cygwin béta 20, référencé ensuite par FILE open (FILE,"$ARGV[0]"); #On crée un compteur $i et on l'initialise à 0 my $i=0; # il s'agit d'un tableau vide appelé "tableau_des_infirmieres " %tableau_des_infirmieres=(); #------------------------------------------------------------- # Parcours du fichier #--------------------------------------------------------------- # tant que je peux lire les lignes du fichier, je le fais. La condition de la boucle étant rempli, on rentre à l'intérieur du bloc d'instruction while ($ligne=){ #Si dans la ligne, il y a le motif recherché alors on prend le motif de $1 qui est ([0-9]+) et on le met dans une variable appelé infirmiere #Le motif recherché est contact suivi de n'importe quel caractère jusqu'à la balise infirmière et qui est juste suivi d'un chiffre ) if ($ligne=~/contact.*([0-9]+)/) { $infirmiere=$1; #Si la variable infirmiere existe dans le tableau _des_infirmieres alors on incrémente le tableau if (exists($tableau_des_infirmieres{$infirmiere})){ $tableau_des_infirmieres{$infirmiere}++; } #sinon on cree un nouvelle clé dans le tableau et on lui associe la valeur 1 else{ $tableau_des_infirmieres{$infirmiere}=1; #et le tableau_des_infirmieres va être incrémenté , aussi. $i=$i+1; } } } # on ferme le fichier en lecture close (FILE); #------------------------------------------------------ # On imprime les resultats : #------------------------------------------------------ #ouverture d'un fichier en écriture, si ce fichier existait auparavant : l'ancien contenu est écrasé. #ce fichier s'appelle "infirmiere.txt" #Dans le fichier résultat: on aura 2 types d'informations: 1) le nb d'infirmière qui parlent de "contact ", 2) on cite toutes les infirmières qui parlent de contact( par exemple infirmière 2, infimière 6...) et on dit à côté de cela , le nb de fois que les infirmières a dit le mot "contact". open (OUT,">infirmiere.txt"); #on affiche le résultat avec la commande print . On indique l'information 1) print OUT "\n il y a $i infirmières pour lesquels on parle de contact\n"; # pour chaque clé du "tableau_des_infirmieres", on affiche le résultat de chaque clé du tableau.On indique donc l'information 2) foreach my $cle (keys %tableau_des_infirmieres) { print OUT "$cle : $tableau_des_infirmieres{$cle} \n"; } #on feme le fichier en sortie close(OUT);