my Perl is rusted...
This commit is contained in:
parent
8684520c5a
commit
c6d8042995
68
chap/Perl.tex
Normal file
68
chap/Perl.tex
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
\chapter{Perl} \label{chap:Perl} \index{Perl}
|
||||||
|
|
||||||
|
|
||||||
|
Également connu sous le nom de
|
||||||
|
\textsl{Pathologically Eclectic Rubbish Lister}%
|
||||||
|
\footnote{collectionneur pathologique de déchets variés},
|
||||||
|
Perl est un langage qui a été crée en 1987 par Larry Wall comme un
|
||||||
|
substitut moderne au classique combo shell/sed/awk.
|
||||||
|
\index{shell} \index{sed} \index{awk}
|
||||||
|
Il est de ce fait très orienté vers la manipulation de
|
||||||
|
données textuelles et contient d'énormes facilités d'utilisation
|
||||||
|
des expressions régulières.
|
||||||
|
|
||||||
|
Il fut un temps, dans le siècle précédent, où il était le maitre
|
||||||
|
incontesté du Web\index{web} interactif, de par son intégration
|
||||||
|
dans le serveur Apache\index{Apache},
|
||||||
|
et de modules d'écriture de clients http\index{http}.
|
||||||
|
|
||||||
|
|
||||||
|
Le débutant peut facilement n'utiliser qu'un sous-ensemble du langage,
|
||||||
|
mais ce serait se priver de quelques \textit{patterns} assez
|
||||||
|
efficients.
|
||||||
|
|
||||||
|
|
||||||
|
\section{Le texte}
|
||||||
|
|
||||||
|
Un cas concret~: générer du code en langage \texttt{C} à partir
|
||||||
|
d'un fichier traité ligne par ligne. Chacune de ces lignes est
|
||||||
|
de la forme \texttt{ID un texte quelconque.} avec ID qui est
|
||||||
|
une courte chaine alphabétique. Le résultat de la conversion
|
||||||
|
sera \texttt{char *p\_ID "un texte quelconque.";} et pourra
|
||||||
|
être utilisé par un \texttt{\#include "fichier.h"} bien
|
||||||
|
classique.
|
||||||
|
|
||||||
|
\subsection{Le traitement}
|
||||||
|
|
||||||
|
Ce traitement peut être décomposé en deux actions emboitées~:
|
||||||
|
d'une part traiter une ligne,
|
||||||
|
et d'autre part, traiter un fichier plein de lignes.
|
||||||
|
|
||||||
|
La première va être encapsulée dans un module Perl.
|
||||||
|
|
||||||
|
\lstinputlisting[language=perl]{code/id2h.pm}
|
||||||
|
|
||||||
|
\subsection{L'interface}
|
||||||
|
|
||||||
|
Quand à l'interface utilisateur, quelques arguments sur
|
||||||
|
la ligne de commande feront l'affaire.
|
||||||
|
|
||||||
|
\lstinputlisting[language=perl]{code/id2h.pl}
|
||||||
|
|
||||||
|
|
||||||
|
\section{Le \texttt{http}}
|
||||||
|
|
||||||
|
|
||||||
|
\section{RFC 8589}
|
||||||
|
|
||||||
|
RFC 8589 is an “informational” RFC that serves as a guide for
|
||||||
|
developers of applications, such as email clients, Web browsers
|
||||||
|
and more, to implement the “leaptofrogans” URI scheme
|
||||||
|
(see also the official URI schemes registered with the IANA).
|
||||||
|
Nobody is under any obligation, but RFC 8589 establishes a clear
|
||||||
|
path for enabling direct links to Frogans sites in online content.
|
||||||
|
|
||||||
|
|
||||||
|
\section{oneliners}
|
||||||
|
|
||||||
|
|
5
code/id2h.pl
Executable file
5
code/id2h.pl
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
use strict;
|
||||||
|
use code::id2h;
|
||||||
|
|
||||||
|
TraiterLigne("ID un texte quelconque.");
|
8
code/id2h.pm
Executable file
8
code/id2h.pm
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
use strict;
|
||||||
|
sub TraiterLigne($)
|
||||||
|
{
|
||||||
|
my $in = shift;
|
||||||
|
print "input: $in\n";
|
||||||
|
}
|
||||||
|
1;
|
1
main.tex
1
main.tex
@ -90,6 +90,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
|
|||||||
\input{chap/son}
|
\input{chap/son}
|
||||||
\input{chap/image}
|
\input{chap/image}
|
||||||
\input{chap/reseau}
|
\input{chap/reseau}
|
||||||
|
\input{chap/Perl}
|
||||||
\input{chap/musique}
|
\input{chap/musique}
|
||||||
% \input{chap/puredata}
|
% \input{chap/puredata}
|
||||||
\input{chap/MIDI}
|
\input{chap/MIDI}
|
||||||
|
Loading…
Reference in New Issue
Block a user