% $Id$

\section{Presentation}

\begin{frame}
\frametitle{PERL}
\begin{block}{}
Perl, écrit par Larry Wall en 1987.
\pause

Perl 5.10 maintenu par Rafael Garcia-Suarez
\pause

Dernière version: 5.10.0
\end{block}
\pause
\vfill
\begin{block}{PERL ne signifie rien}
\emph{Practical Extraction and Report Language}
(\emph{langage pratique d'extraction et de génération de rapports})

\textbf{ou}

\emph{Pathetically Eclectic Rubbish Lister}
(\emph{collectionneur de déchets pathétiquement éclectiques})
\end{block}
\pause
\vfill

\begin{alertblock}{Perl 5 !}
Perl 6 sera très différent
\end{alertblock}
\end{frame}

\begin{frame}
\frametitle{Pourquoi PERL ?}
\begin{itemize}
\item langage scripté, non compilé
\pause
\item gestion de la mémoire dynamique et automatique
\pause
\item portable (existe sous Unix*, Windows, OS/2, VMS\ldots)
\pause
\item est orienté objet
\pause
\item possède un grand nombre de modules additionnels
\pause
\item est très documenté
\pause
\item la communauté perl est conviviale
\end{itemize}
\pause
\vfill
Utilisation:
\begin{itemize}
\item petits scripts type shell
\pause
\item des programmes complexes
\pause
\item des services de toutes sortes
\pause
\item des sites web
\item \ldots
\end{itemize}
\end{frame}

\begin{frame}[fragile]
\frametitle{Exemples}
\begin{exampleblock}{Exemple de script:}
\begin{verbatim}
#!env perl

print "Hello World\n";
\end{verbatim}
\end{exampleblock}
\pause
\vfill
\begin{exampleblock}{One-liner}
\verb+perl -e 'print "Hello World\n"'+
\end{exampleblock}
\end{frame}

\begin{frame}[fragile]
\frametitle{Obfusacte perl}
Sinon ça peut aussi ressembler à ça:
\vfill
\begin{exampleblock}{bestever.pl de Philippe Bruhat (Book)}
\begin{tiny}
\begin{verbatim}
/;{}def/#{def}def/$_={/Times-Bold exch selectfont}#/_{rmoveto}#/"{dup}#/*/!/$
;/q{exch}#/x ; {/J q #}#/.{/T q #}#{stringwidth}#{}#{}# 14 string dup dup dup
260 40 moveto 90 rotate ; %/}};$0='"\e[7m \e[0m"';@ARGV=split//,reverse
q(ThePerl). q(Journal) x 220 ; q ; 0 T putinterval exch 7 J putinterval ;
 ; $_= q /m$ pop T($*!$"=!$ " )pop " * true% ? $ " $!" "  !!  !! % !" !"    !
! charpath {!"""}pop $ pop{""!}pop ! neg{!#}pop 220 ! neg _{!!}pop J false %T
charpath  clip " pop 0 " moveto 6{!!}pop $_= 105{!!}pop {$ ! $ " !  #! ##}
pop{dup dup $ ! " pop pop q{"}pop 22{dup show}repeat {"}pop q 22 mul{$ "} pop
neg{!#! $ "}pop ! 8 .65 mul{$ # # $}pop ! neg{"}pop  _ pop{"}pop } repeat pop
" {  $ " ! ! ! $ " ! !" "#"  #"!"""""! #" " # "m/;@ARGV=(@ARGV[-14..-1])x50;q}
 0 "%};s/m[ou]|[-\dA-ln-z.\n_{}]|\$_=//gx;s/(.)(?{$*=''})/('$*.='.(++$#
%2?'':"$0;").'pop;')x(ord($1)-31).'$*'/gee;s/((.(\e\[.m)*|.){77})/$1\n/g;print
; sub showpage {}
\end{verbatim}
\end{tiny}
\end{exampleblock}
\end{frame}

