Index: trunk/tp-perl/Makefile
===================================================================
--- trunk/tp-perl/Makefile	(revision 267)
+++ trunk/tp-perl/Makefile	(revision 268)
@@ -13,4 +13,5 @@
    exercice01.pl \
    exercice02.pl \
+   fichier.pl  filespec.pl  filewhich.pl \
 
 FIGURES= \
Index: trunk/tp-perl/filespec.pl
===================================================================
--- trunk/tp-perl/filespec.pl	(revision 268)
+++ trunk/tp-perl/filespec.pl	(revision 268)
@@ -0,0 +1,7 @@
+#!/bin/env perl
+
+use File::Spec;
+
+print File::Spec->catfile(
+    $ENV{HOME}, '.bashrc'
+) . "\n";
Index: trunk/tp-perl/filewhich.pl
===================================================================
--- trunk/tp-perl/filewhich.pl	(revision 268)
+++ trunk/tp-perl/filewhich.pl	(revision 268)
@@ -0,0 +1,10 @@
+#!/bin/env perl
+
+use strict;
+use File::Which qw(which);
+
+if (my $bin = which($ARGV[0])) {
+    print "$bin\n";
+} else {
+    die "$ARGV[0] not found\n";
+}
Index: trunk/tp-perl/getoptlong.pl
===================================================================
--- trunk/tp-perl/getoptlong.pl	(revision 268)
+++ trunk/tp-perl/getoptlong.pl	(revision 268)
@@ -0,0 +1,15 @@
+#!/bin/env perl -W
+
+use strict;
+use Getopt::Long;
+
+GetOptions(
+    t     => \my $test,
+    'p=s' => \my $pref,
+) or die 'wrong option';
+
+$pref ||= '';
+
+if (!$test) {
+    print $pref . "\n";
+}
Index: trunk/tp-perl/getoptstd.pl
===================================================================
--- trunk/tp-perl/getoptstd.pl	(revision 268)
+++ trunk/tp-perl/getoptstd.pl	(revision 268)
@@ -0,0 +1,12 @@
+#!/bin/env perl -W
+
+use strict;
+use Getopt::Std;
+
+getopts('tp:', \my %opts);
+
+$opts{p} ||= '';
+
+if (!$opts{t}) {
+    print $opts{p} . "\n";
+}
Index: trunk/tp-perl/main.tex
===================================================================
--- trunk/tp-perl/main.tex	(revision 267)
+++ trunk/tp-perl/main.tex	(revision 268)
@@ -137,4 +137,26 @@
 \end{frame}
 
+\subsection{Renvois d'erreurs}
+
+\begin{frame}[fragile]
+\frametitle{Renvois d'erreur}
+\begin{block}{Fonctions:}
+\begin{itemize}
+\item \verb+warn()+: affiche un message d'erreur
+\item \verb+die()+: met aussi fin au script
+\end{itemize}
+\end{block}
+\begin{block}{Fin de ligne}
+Sans retour chariot, la ligne est affichÃ©e:
+\begin{scriptsize}
+\begin{verbatim}
+  DB<16> die "je meurs"                                                                                                                                      
+je meurs at (eval 40)[/usr/lib/perl5/5.12.2/
+   perl5db.pl:638] line 2.
+\end{verbatim}
+\end{scriptsize}
+\end{block}
+\end{frame}
+
 \subsection{Les boucles}
 
@@ -300,4 +322,42 @@
 \end{frame}
 
+\begin{frame}[fragile]
+\begin{block}{Trouver le premier \og{}mot \fg{}}
+\begin{verbatim}
+$text =~ /([\w']+)/";
+print $1;
+\end{verbatim}
+\end{block}
+\pause
+
+\begin{block}{trouver le premier chiffre}
+\begin{verbatim}
+$text =~ /(\d)/";
+print $1;
+\end{verbatim}
+\end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+\begin{block}{remplacer \og{}Pearl \fg{} par \og{}Perl \fg{}}
+\begin{verbatim}
+$text =~ s/Pearl/Perl/;
+print $text;
+\end{verbatim}
+\end{block}
+\pause
+
+\begin{block}{remplacer les espaces par des \og{}\_ \fg{}}
+\begin{verbatim}
+$text =~ s/\s/_/g;
+print $text;
+
+L\'attaque_sur_Pearl_Harbor_fut_lancee_par
+_surprise_le_matin_du_dimanche_7_dÃ©cembre
+_1941.
+\end{verbatim}
+\end{block}
+\end{frame}
+
 \section{AccÃšs aux fichiers}
 
@@ -341,5 +401,69 @@
 \section{Utilisation d'un module}
 
-
+\begin{frame}
+\frametitle{CPAN}
+\begin{block}{CPAN ?}
+Comprehensive Perl Archive Network
+\begin{itemize}
+\item \href{http://search.cpan.org}{http://search.cpan.org}
+\item dÃ©pot de modules perl
+\item contributions bÃ©nÃ©voles
+\end{itemize}
+\end{block}
+\pause
+\begin{alertblock}{Regardez sur le CPAN}
+Ne rÃ©inventez pas la roue !
+\end{alertblock}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Utilisation d'un module}
+\begin{block}{use: syntaxe}
+\verb+use MODULE @IMPORT;+
+\end{block}
+\pause
+\begin{exampleblock}{File::Spec}
+\scriptsize{\verbatiminput{filespec.pl}}
+\end{exampleblock}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Exercice: which}
+\begin{block}{which ?}
+Ecrire un script qui affiche l'emplacement d'un executable.
+Le module \verb+File::Which+ peut servir !
+\end{block}
+\pause
+\begin{exampleblock}{Solution}
+\scriptsize{\verbatiminput{filewhich.pl}}
+\end{exampleblock}
+\end{frame}
+
+\section{Parser la ligne de commande}
+
+\begin{frame}
+\frametitle{Getopt::Std}
+\begin{exampleblock}{Exemple}
+\scriptsize{\verbatiminput{getoptstd.pl}}
+\end{exampleblock}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Getopt::Long}
+\begin{block}{Exercice}
+Refaire la mÃªme chose avec Getopt::Long:
+\begin{itemize}
+\item l'argument de \verb+-p+ est affichÃ©
+\item \verb+-t+ ne fais rien
+\end{itemize}
+\end{block}
+\end{frame}
+
+\begin{frame}[frame]
+\frametitle{Getopt::Long}
+\begin{exampleblock}{Exemple}
+\scriptsize{\verbatiminput{getoptlong.pl}}
+\end{exampleblock}
+\end{frame}
 
 \end{document}
