From c6d80429951281a243af6b1549d606878f0af0b1 Mon Sep 17 00:00:00 2001 From: tth Date: Fri, 27 Nov 2020 14:43:55 +0100 Subject: [PATCH] my Perl is rusted... --- chap/Perl.tex | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++ code/id2h.pl | 5 ++++ code/id2h.pm | 8 ++++++ main.tex | 1 + 4 files changed, 82 insertions(+) create mode 100644 chap/Perl.tex create mode 100755 code/id2h.pl create mode 100755 code/id2h.pm diff --git a/chap/Perl.tex b/chap/Perl.tex new file mode 100644 index 0000000..8de996e --- /dev/null +++ b/chap/Perl.tex @@ -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} + + diff --git a/code/id2h.pl b/code/id2h.pl new file mode 100755 index 0000000..cd49739 --- /dev/null +++ b/code/id2h.pl @@ -0,0 +1,5 @@ +#!/usr/bin/perl -w +use strict; +use code::id2h; + +TraiterLigne("ID un texte quelconque."); diff --git a/code/id2h.pm b/code/id2h.pm new file mode 100755 index 0000000..280cca5 --- /dev/null +++ b/code/id2h.pm @@ -0,0 +1,8 @@ +#!/usr/bin/perl -w +use strict; +sub TraiterLigne($) +{ +my $in = shift; +print "input: $in\n"; +} +1; \ No newline at end of file diff --git a/main.tex b/main.tex index 13967d5..2130232 100644 --- a/main.tex +++ b/main.tex @@ -90,6 +90,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots \input{chap/son} \input{chap/image} \input{chap/reseau} +\input{chap/Perl} \input{chap/musique} % \input{chap/puredata} \input{chap/MIDI}