Introduction `a la programmation en Perl
c
[email protected]
} } close(FILE); foreac foreach h $word $word (sort (sort keys keys %total %total) ) { prin print t "$wo "$word rd a ´ et´ et´ e rencontr rencontr´ ´ e $total{$w $total{$word} ord} fois.\n"; fois.\n"; }
On effectue une boucle while sur les lignes du fichier. Chaque ligne est alors alo rs d´ecoup´ ecou p´ee ee en mots par la fonctio fon ction n split (\W+ correspond aux suites de caract`eres eres non-alphanum´ non-alp hanum´eriques, eriques , nous n ous verrons verr ons cela dans la suite su ite lorsque lorsqu e nous nou s ´etudierons etudier ons les expressions expressi ons r´eguli` eguli`eres). eres). Chaque mot est mis en minuscules au moyen de l’op´erateu era teurr tr (que nous expliquerons avec avec les expressions r´egueguli` li`eres er es). ).
9.7
Ex´ ecution ecution de commandes commandes avec avec open
Il est facile facile en Perl Perl de lancer lancer une comma commande nde shell et de r´ ecup´ ecup´erer erer sa sortie standard ou de fournir son entr´ entr´ee ee standard. Pour lire la sortie standard d’un programme, il suffit d’utiliser la syntaxe suivant suivantee : open(HANDLE,"commande|") par exemple exemple : open(FIC1,"ls|") open(FIC2 open(FIC2,"df ,"df -HT $device|" $device|") )
Les lignes lues via le descripteur de fichier ainsi cr´ e´ ee´ seront celles que la commande comman de aurait aurai t affich´ ees ees a` l’´ecran ecran si on l’avait lanc´ee ee depuis un terminal. termin al. La syntaxe syntaxe open(HANDLE,"|commande") permet de lancer une commande. Les lignes lignes ´ecrites ecrites dans le descripteu descripteurr de fichier fichier constituero constitueront nt son entr´ee ee standar s tandard, d, par exemple : open(FIC3 open(FIC3,"|gz ,"|gzip ip > $a.gz") $a.gz") open(FIC4,"|mail open(FIC4,"|mail robert\@bidochon.org") robert\@bidochon.org")
Quoi de plus simple?
9.8
´ Ecrire une table de hachage sur disque avec les fichiers DBM
Le format DBM est un format de fichier de hachage (clef/valeur) standardis´e. e. Il existe en dehors de Perl. 78