source: trunk/perl/perl.chaines.tex @ 183

Last change on this file since 183 was 183, checked in by nanardon, 16 years ago
  • rename tex files
  • Property svn:keywords set to Id
File size: 3.9 KB
Line 
1% $Id$
2\section{Chaines de caractères}
3
4\subsection{quote}
5
6\begin{frame}[fragile]
7\frametitle{Opérateur et délimiteurs}
8\begin{block}{}
9\begin{tabular}{|l|l|l|}
10\hline
11\textbf{faire}&\textbf{interpollée}&\textbf{non interpolée}\\
12\hline
13\hline
14une chaine&\verb+""+&\verb+''+\\
15\hline
16\hline
17une chaine&\verb+q//+&\verb+qq//+\\
18\hline
19une liste&&qw//\\
20\hline
21\end{tabular}
22\end{block}
23\vfill
24\pause
25
26\begin{block}{Délimiteurs des opérateurs:}
27\begin{itemize}
28\item n'importe quels caractères
29\item les couples logiques \verb+()+, \verb+[]+, \verb+{}+
30\end{itemize}
31\end{block}
32\vfill
33\pause
34\begin{exampleblock}{}
35Exemple: \verb+q//+, \verb+q;;+, \verb+q[]+, \verb+q{}+
36\end{exampleblock}
37\end{frame}
38
39\begin{frame}[fragile]
40\frametitle{quote: exemple}
41
42\begin{exampleblock}{Chaine interpolées:}
43\begin{verbatim}
44my $var = "UMR7620";
45
46print "nous somme \"$var\"";
47print qq!nous somme "$var"!;
48\end{verbatim}
49\end{exampleblock}
50\pause
51\vfill
52\begin{exampleblock}{Chaine non interpolées:}
53\begin{verbatim}
54my $var = 'UMR7620';
55
56print '$var est une variable';
57print q{'$var' est une variable};
58\end{verbatim}
59\end{exampleblock}
60\pause
61\vfill
62\begin{exampleblock}{une liste}
63\begin{verbatim}
64my @tableau = qw(une liste de mots);
65\end{verbatim}
66\end{exampleblock}
67\end{frame}
68
69\begin{frame}[fragile]
70\frametitle{quote quote}
71\vfill
72\begin{exampleblock}{Pour les longues chaines:}
73\begin{verbatim}
74my $var = 42;
75
76print <<FIN_DU_TEXTE;
77La réponse à la question
78universelle est $var.
79FIN_DU_TEXTE
80\end{verbatim}
81\end{exampleblock}
82\end{frame}
83
84\subsection{RegExp}
85
86\begin{frame}
87\frametitle{Perl réinvente les RegExp}
88\begin{block}{Comment ne pas parler des Expéssions Régulières ?}
89Elles sont
90\begin{itemize}
91\item puissantes
92\item très étendues
93\item naturelles en perl
94\end{itemize}
95\end{block}
96
97\vfill
98\begin{block}{Perl Compatible Regular Expression}
99Il y a même une librairie qui émule les expression régulière de PERL.
100
101Utilisé par
102\begin{itemize}
103\item grep (et oui)
104\item php
105\item kde
106\item \ldots
107\end{itemize}
108\end{block}
109\end{frame}
110
111\begin{frame}[fragile]
112\frametitle{RegExp: les bases}
113\textbf{Regarde si une chaine correspond à un motif}
114
115\begin{block}{le motif peut contenir:}
116\vfill
117
118\begin{tabular}{cl}
119\verb+.+&1 caractère\\
120\pause
121&\\
122\verb+*+&0 ou plusieurs fois\\
123\verb-+-&1 ou plusieurs fois\\
124\verb+?+&1 fois\\
125\pause
126&\\
127\verb+\+&echape un caractère magique\\
128\pause
129&\\
130\verb+^+&début de ligne\\
131\verb+$+&fin de ligne\\
132\pause
133&\\
134\verb+()+&forme un groupe\\
135\end{tabular}
136\end{block}
137\end{frame}
138
139\begin{frame}[fragile]
140\frametitle{Anatomie}
141\begin{exampleblock}{L'expression régulière:}
142\small
143\begin{semiverbatim}
144  $var \onslide<2->{=~}  \onslide<3->{m}\onslide<4->{/}\onslide<5->{motif}\onslide<4->{/}\onslide<6->{i};
145  $var \onslide<2->{=~}   \onslide<4->{/}\onslide<5->{motif}\onslide<4->{/}\onslide<6->{i}; \onslide<3->{# séparateur / => opérateur m}
146  $var \onslide<2->{=~}  \onslide<3->{s}\onslide<4->{/}\onslide<5->{motif}\onslide<4->{/}\onslide<5->{remplacement}\onslide<4->{/}\onslide<6->{g};
147\end{semiverbatim}
148\end{exampleblock}
149
150\vfill
151\pause
152\begin{block}{}
153\begin{itemize}
154\small
155\item un opérateur de comparaison
156    \begin{itemize}
157    \item \verb+=~+ : correspond
158    \item \verb+!~+ : ne correspond pas
159    \end{itemize}
160\pause
161\item une action
162    \begin{itemize}
163    \item \textbf{m} (match, le défaut)
164    \item \textbf{s} (substitute)
165    \end{itemize}
166\pause
167\item des séparateurs (au choix)
168\pause
169\item le texte recherché (et le remplacement)
170\pause
171\item éventuellement un modificateur
172\end{itemize}
173\end{block}
174\end{frame}
175
176\begin{frame}[fragile]
177\frametitle{RegExp: exemple dans perl}
178\begin{exampleblock}{}
179\begin{verbatim}
180my @list = ('UMR7620', 'umr8639');
181
182foreach my $umr (@list) {
183    my ($number) = $umr =~ /^umr(.*)$/;
184    if ($number)  {
185        print "Unité mixte $number\n";
186    }
187}
188\end{verbatim}
189\end{exampleblock}
190\pause
191\vfill
192\begin{block}{la doc !}
193\begin{itemize}
194\item \verb+man perlre+
195\item \verb+man perlretut+
196\end{itemize}
197\end{block}
198\end{frame}
Note: See TracBrowser for help on using the repository browser.