source: trunk/perl/chaines.tex @ 176

Last change on this file since 176 was 176, checked in by nanardon, 16 years ago
  • improve table of contents view
  • Property svn:keywords set to Id
File size: 3.4 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\pause
43\vfill
44Chaine interpolées:
45
46\begin{verbatim}
47my $var = "UMR7620";
48
49print "nous somme $var";
50pinrt qq{nous somme "$var"};
51\end{verbatim}
52
53\pause
54\vfill
55Chaine non interpolées:
56
57\begin{verbatim}
58my $var = 'UMR7620';
59
60print '$var est une variable';
61print q{'$var' est une variable};
62\end{verbatim}
63\end{frame}
64
65\begin{frame}[fragile]
66\frametitle{quote quote}
67Pour les longues chaines:
68\vfill
69\begin{verbatim}
70my $var = 42;
71
72print <<FIN_DU_TEXTE;
73La réponse à la question
74universelle est $var.
75FIN_DU_TEXTE
76\end{verbatim}
77\vfill
78\end{frame}
79
80\subsection{RegExp}
81
82\begin{frame}
83\frametitle{Perl réinvente les RegExp}
84Les expressions régulières de Perl sont très puissantes !
85
86\vfill
87\emph{Perl ça pue, y'a pas de fonction pour travailler avec des regexp comme en php}
88\vfill
89Php comme d'autres utilise la lib PCRE (Perl Compatible Regular Expressions).
90
91\pause
92\vfill
93Attention: Perl utilise des expressions régulières très étendues
94\end{frame}
95
96\begin{frame}[fragile]
97\frametitle{Anatomie}
98Deux opérateurs:
99\begin{itemize}
100\item \verb+=~+ : correspond
101\item \verb+!~+ : ne correspond pas
102\end{itemize}
103\pause
104
105L'expression régulière:
106
107\begin{semiverbatim}
108  $var =\onslide<3->{m}\onslide<4->{/}\onslide<5->{motif}\onslide<4->{/}\onslide<6->{g};
109  $var =~   \onslide<4->{/}\onslide<5->{motif}\onslide<4->{/}\onslide<6->{g};
110  $var =\onslide<3->{s}\onslide<4->{/}\onslide<5->{motif}\onslide<4->{/}\onslide<5->{remplacement}\onslide<4->{/}\onslide<6->{g};
111\end{semiverbatim}
112
113\vfill
114\pause
115\begin{itemize}
116\item une action
117    \begin{itemize}
118    \item \textbf{m} (match, le défaut)
119    \item \textbf{s} (substitute)
120    \end{itemize}
121\pause
122\item des séparateurs (au choix)
123\pause
124\item le texte recherché (et le remplacement)
125\pause
126\item éventuellement un modificateur
127\end{itemize}
128\end{frame}
129
130\begin{frame}[fragile]
131\frametitle{RegExp: les bases}
132Regarde si un chaine correspond à un motif
133
134Où le motif peut contenir:
135\vfill
136
137\begin{tabular}{cl}
138\verb+.+&1 caractère\\
139\pause
140&\\
141\verb+*+&0 ou plusieurs fois\\
142\verb-+-&1 ou plusieurs fois\\
143\verb+?+&1 fois\\
144\pause
145&\\
146\verb+\+&echape un caractère magique\\
147\pause
148&\\
149\verb+^+&début de ligne\\
150\verb+$+&fin de ligne\\
151\pause
152&\\
153\verb+()+&forme un groupe\\
154\end{tabular}
155
156\vfill
157
158\verb+man perlre+ pour tout savoir\ldots
159\end{frame}
160
161\begin{frame}[fragile]
162\frametitle{RegExp: exemple dans perl}
163\begin{verbatim}
164my @list = ('UMR7620', 'umr8639');
165
166foreach my $umr (@list) {
167    my ($number) = $umr =~ /^umr(.*)$/;
168    if ($number)  {
169        print "Unité mixte $number\n";
170    }
171}
172\end{verbatim}
173\pause
174\vfill
175Bon, je parle de perl, pas des RegExp, alors \verb+man perlre+ et \verb+man perlretut+ !
176
177\end{frame}
Note: See TracBrowser for help on using the repository browser.