% $Id$ \section{Chaines de caractères} \subsection{quote} \begin{frame}[fragile] \frametitle{Opérateur et délimiteurs} \begin{block}{} \begin{tabular}{|l|l|l|} \hline \textbf{faire}&\textbf{interpollée}&\textbf{non interpolée}\\ \hline \hline une chaine&\verb+""+&\verb+''+\\ \hline \hline une chaine&\verb+q//+&\verb+qq//+\\ \hline une liste&&qw//\\ \hline \end{tabular} \end{block} \vfill \pause \begin{block}{Délimiteurs des opérateurs:} \begin{itemize} \item n'importe quels caractères \item les couples logiques \verb+()+, \verb+[]+, \verb+{}+ \end{itemize} \end{block} \vfill \pause \begin{exampleblock}{} Exemple: \verb+q//+, \verb+q;;+, \verb+q[]+, \verb+q{}+ \end{exampleblock} \end{frame} \begin{frame}[fragile] \frametitle{quote: exemple} \pause \vfill Chaine interpolées: \begin{verbatim} my $var = "UMR7620"; print "nous somme $var"; pinrt qq{nous somme "$var"}; \end{verbatim} \pause \vfill Chaine non interpolées: \begin{verbatim} my $var = 'UMR7620'; print '$var est une variable'; print q{'$var' est une variable}; \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{quote quote} Pour les longues chaines: \vfill \begin{verbatim} my $var = 42; print <{m}\onslide<4->{/}\onslide<5->{motif}\onslide<4->{/}\onslide<6->{g}; $var =~ \onslide<4->{/}\onslide<5->{motif}\onslide<4->{/}\onslide<6->{g}; $var =~ \onslide<3->{s}\onslide<4->{/}\onslide<5->{motif}\onslide<4->{/}\onslide<5->{remplacement}\onslide<4->{/}\onslide<6->{g}; \end{semiverbatim} \vfill \pause \begin{itemize} \item une action \begin{itemize} \item \textbf{m} (match, le défaut) \item \textbf{s} (substitute) \end{itemize} \pause \item des séparateurs (au choix) \pause \item le texte recherché (et le remplacement) \pause \item éventuellement un modificateur \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{RegExp: les bases} Regarde si un chaine correspond à un motif Où le motif peut contenir: \vfill \begin{tabular}{cl} \verb+.+&1 caractère\\ \pause &\\ \verb+*+&0 ou plusieurs fois\\ \verb-+-&1 ou plusieurs fois\\ \verb+?+&1 fois\\ \pause &\\ \verb+\+&echape un caractère magique\\ \pause &\\ \verb+^+&début de ligne\\ \verb+$+&fin de ligne\\ \pause &\\ \verb+()+&forme un groupe\\ \end{tabular} \vfill \verb+man perlre+ pour tout savoir\ldots \end{frame} \begin{frame}[fragile] \frametitle{RegExp: exemple dans perl} \begin{verbatim} my @list = ('UMR7620', 'umr8639'); foreach my $umr (@list) { my ($number) = $umr =~ /^umr(.*)$/; if ($number) { print "Unité mixte $number\n"; } } \end{verbatim} \pause \vfill Bon, je parle de perl, pas des RegExp, alors \verb+man perlre+ et \verb+man perlretut+ ! \end{frame}