[150] | 1 | % $Id$ |
---|
[176] | 2 | \section{Chaines de caractères} |
---|
[157] | 3 | |
---|
[159] | 4 | \subsection{quote} |
---|
| 5 | |
---|
| 6 | \begin{frame}[fragile] |
---|
[174] | 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 |
---|
| 14 | une chaine&\verb+""+&\verb+''+\\ |
---|
| 15 | \hline |
---|
| 16 | \hline |
---|
| 17 | une chaine&\verb+q//+&\verb+qq//+\\ |
---|
| 18 | \hline |
---|
| 19 | une liste&&qw//\\ |
---|
| 20 | \hline |
---|
| 21 | \end{tabular} |
---|
| 22 | \end{block} |
---|
| 23 | \vfill |
---|
| 24 | \pause |
---|
| 25 | |
---|
| 26 | \begin{block}{Délimiteurs des opérateurs:} |
---|
[159] | 27 | \begin{itemize} |
---|
[174] | 28 | \item n'importe quels caractères |
---|
[159] | 29 | \item les couples logiques \verb+()+, \verb+[]+, \verb+{}+ |
---|
| 30 | \end{itemize} |
---|
[174] | 31 | \end{block} |
---|
| 32 | \vfill |
---|
| 33 | \pause |
---|
| 34 | \begin{exampleblock}{} |
---|
[159] | 35 | Exemple: \verb+q//+, \verb+q;;+, \verb+q[]+, \verb+q{}+ |
---|
[174] | 36 | \end{exampleblock} |
---|
| 37 | \end{frame} |
---|
[159] | 38 | |
---|
[174] | 39 | \begin{frame}[fragile] |
---|
| 40 | \frametitle{quote: exemple} |
---|
| 41 | |
---|
[177] | 42 | \begin{exampleblock}{Chaine interpolées:} |
---|
[159] | 43 | \begin{verbatim} |
---|
| 44 | my $var = "UMR7620"; |
---|
| 45 | |
---|
[177] | 46 | print "nous somme \"$var\""; |
---|
| 47 | print qq!nous somme "$var"!; |
---|
[159] | 48 | \end{verbatim} |
---|
[177] | 49 | \end{exampleblock} |
---|
[159] | 50 | \pause |
---|
| 51 | \vfill |
---|
[177] | 52 | \begin{exampleblock}{Chaine non interpolées:} |
---|
[159] | 53 | \begin{verbatim} |
---|
| 54 | my $var = 'UMR7620'; |
---|
| 55 | |
---|
| 56 | print '$var est une variable'; |
---|
| 57 | print q{'$var' est une variable}; |
---|
| 58 | \end{verbatim} |
---|
[177] | 59 | \end{exampleblock} |
---|
| 60 | \pause |
---|
| 61 | \vfill |
---|
| 62 | \begin{exampleblock}{une liste} |
---|
| 63 | \begin{verbatim} |
---|
| 64 | my @tableau = qw(une liste de mots); |
---|
| 65 | \end{verbatim} |
---|
| 66 | \end{exampleblock} |
---|
[159] | 67 | \end{frame} |
---|
| 68 | |
---|
| 69 | \begin{frame}[fragile] |
---|
| 70 | \frametitle{quote quote} |
---|
| 71 | \vfill |
---|
[177] | 72 | \begin{exampleblock}{Pour les longues chaines:} |
---|
[159] | 73 | \begin{verbatim} |
---|
| 74 | my $var = 42; |
---|
| 75 | |
---|
| 76 | print <<FIN_DU_TEXTE; |
---|
| 77 | La réponse à la question |
---|
| 78 | universelle est $var. |
---|
| 79 | FIN_DU_TEXTE |
---|
| 80 | \end{verbatim} |
---|
[177] | 81 | \end{exampleblock} |
---|
[159] | 82 | \end{frame} |
---|
| 83 | |
---|
| 84 | \subsection{RegExp} |
---|
| 85 | |
---|
[158] | 86 | \begin{frame} |
---|
[161] | 87 | \frametitle{Perl réinvente les RegExp} |
---|
[177] | 88 | \begin{block}{Comment ne pas parler des Expéssions Régulières ?} |
---|
| 89 | Elles sont |
---|
[161] | 90 | \begin{itemize} |
---|
[177] | 91 | \item puissantes |
---|
| 92 | \item très étendues |
---|
| 93 | \item naturelles en perl |
---|
[161] | 94 | \end{itemize} |
---|
[177] | 95 | \end{block} |
---|
[158] | 96 | |
---|
[177] | 97 | \vfill |
---|
| 98 | \begin{block}{Perl Compatible Regular Expression} |
---|
| 99 | Il y a même une librairie qui émule les expression régulière de PERL. |
---|
[161] | 100 | |
---|
[177] | 101 | Utilisé par |
---|
[161] | 102 | \begin{itemize} |
---|
[177] | 103 | \item grep (et oui) |
---|
| 104 | \item php |
---|
| 105 | \item kde |
---|
| 106 | \item \ldots |
---|
[161] | 107 | \end{itemize} |
---|
[177] | 108 | \end{block} |
---|
[158] | 109 | \end{frame} |
---|
| 110 | |
---|
[162] | 111 | \begin{frame}[fragile] |
---|
| 112 | \frametitle{RegExp: les bases} |
---|
[177] | 113 | \textbf{Regarde si une chaine correspond à un motif} |
---|
[150] | 114 | |
---|
[177] | 115 | \begin{block}{le motif peut contenir:} |
---|
[162] | 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 | &\\ |
---|
[164] | 130 | \verb+^+&début de ligne\\ |
---|
| 131 | \verb+$+&fin de ligne\\ |
---|
| 132 | \pause |
---|
| 133 | &\\ |
---|
[162] | 134 | \verb+()+&forme un groupe\\ |
---|
| 135 | \end{tabular} |
---|
[177] | 136 | \end{block} |
---|
| 137 | \end{frame} |
---|
[162] | 138 | |
---|
[177] | 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 | |
---|
[162] | 150 | \vfill |
---|
[177] | 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} |
---|
[150] | 174 | \end{frame} |
---|
| 175 | |
---|
[162] | 176 | \begin{frame}[fragile] |
---|
| 177 | \frametitle{RegExp: exemple dans perl} |
---|
[177] | 178 | \begin{exampleblock}{} |
---|
[164] | 179 | \begin{verbatim} |
---|
| 180 | my @list = ('UMR7620', 'umr8639'); |
---|
| 181 | |
---|
| 182 | foreach my $umr (@list) { |
---|
| 183 | my ($number) = $umr =~ /^umr(.*)$/; |
---|
| 184 | if ($number) { |
---|
| 185 | print "Unité mixte $number\n"; |
---|
| 186 | } |
---|
| 187 | } |
---|
| 188 | \end{verbatim} |
---|
[177] | 189 | \end{exampleblock} |
---|
[164] | 190 | \pause |
---|
| 191 | \vfill |
---|
[177] | 192 | \begin{block}{la doc !} |
---|
| 193 | \begin{itemize} |
---|
| 194 | \item \verb+man perlre+ |
---|
| 195 | \item \verb+man perlretut+ |
---|
| 196 | \end{itemize} |
---|
| 197 | \end{block} |
---|
[162] | 198 | \end{frame} |
---|