  Quelques informations sur _p_e_r_l
  Olivier Aubert, OOlliivviieerr..AAuubbeerrtt@@eennsstt--bbrreettaaggnnee..ffrr
  18 Juillet 1996

  Ce document donne un certain nombre de points de dpart concernant
  _p_e_r_l. C'est une introduction gnrale au langage, mais pas  sa pro
  grammation. Des rfrences vers d'autres documents complmentaires
  sont donnes tout au long de l'article.
  ______________________________________________________________________

  Table of Contents:

  1.      Introduction

  1.1.    Prsentation

  1.2.    Historique

  1.3.    Problme de version ?

  1.4.    Qu'apporte perl5 par rapport  la version prcdente ?

  2.      O trouver les fichiers, indispensables ou superflus ?

  2.1.    Sur le WWW

  2.2.    Par

  2.3.    Par Usenet

  3.      O trouver de la documentation ?

  3.1.    En ligne

  3.1.1.  Accs

  3.1.2.  Organisation

  3.1.3.  Documentation des modules

  3.2.    Sur le WWW

  3.3.    De vrais livres

  4.      Informations complmentaires

  4.1.    Installation de modules

  4.1.1.  Dmarche gnrale

  4.1.2.  Un exemple plus dvelopp

  4.2.    Comment installer un module sans avoir les droits root ?
  ______________________________________________________________________

  11..  IInnttrroodduuccttiioonn

  11..11..  PPrrsseennttaattiioonn

  _p_e_r_l est un langage interprt (avec une phase interne de
  pr-compilation) optimis pour traiter des fichiers texte, mais qui
  peut galement tre utilis pour diverses tches d'administration-
  systeme.

  Sa syntaxe s'inspire trs largement de celles de _C, _a_w_k, _s_e_d et _s_h, ce
  qui rend son apprentissage trs facile pour toute personne ayant un
  peu d'exprience avec ces outils. Nanmoins, pas d'affolement si vous
  ne les connaissez pas, vous pourrez apprcier certains concepts avec
  un oeil neuf.

  Il n'y a aucune limitation sur la taille des donnes ou sur leur
  contenu (une chane peut contenir le caractre nul, et la gestion de
  la mmoire qu'elle utilise n'est pas  la charge du programmeur).

  Une grande quantit de modules permet de lui ajouter rapidement
  diverses extensions (CGI, Tk, Msql, POSIX, Curses, NNTP, etc).

  Un des ses avantages est qu'il permet d'crire rapidement des
  applications puissantes qui peuvent tourner immdiatement sur
  plusieurs plates-formes diffrentes.  Son utilisation va donc du
  prototypage rapide d'applications au dveloppement complet de
  programmes divers et portables.

  11..22..  HHiissttoorriiqquuee

  _p_e_r_l a t conu en 1987 par Larry Wall.  C'est  la mme personne que
  l'on doit le lecteur de news rrnn ainsi que l'utilitaire ppaattcchh, bien
  connu des Linuxeurs/iens/istes.  Il avait besoin  l'poque de gnrer
  des rapports sur le trafic engendr par un systme analogue aux News
  actuelles, et les outils dont il disposait  l'poque taient soit pas
  assez puissants, soit pas assez souples.

  Il a donc conu un langage adapt  ses besoins, c'est--dire capable
  d'analyser des donnes textuelles pour concevoir des rapports, d'o
  l'acronyme utilis: _P_r_a_c_t_i_c_a_l _E_x_t_r_a_c_t_i_o_n _a_n_d _R_e_p_o_r_t _L_a_n_g_u_a_g_e. Cette
  signification _p_o_l_i_t_i_q_u_e_m_e_n_t _c_o_r_r_e_c_t_e n'est apparue, d'aprs le
  folklore, qu'aprs le terme plus prcis: _P_a_t_h_o_l_o_g_i_c_a_l_l_y _E_c_l_e_c_t_i_c
  _R_u_b_b_i_s_h _L_i_s_t_e_r.

  Ayant mis sa cration  disposition d'autres personnes, il a ensuite
  intgr de nombreuses fonctionnalits (appels systmes, etc) qui lui
  taient demandes, ce qui a conduit le langage a tre utilis par de
  nombreux administrateurs-systme.

  11..33..  PPrroobbllmmee ddee vveerrssiioonn ??

  Ces derniers temps ont vu une nouvelle source de problmes merger
  dans la communaut _p_e_r_l,  l'occasion de la sortie de la version 5 du
  langage. La version prcdente, gnralement 4.036, tait alors
  utilise depuis quelques annes, quand la nouvelle version est sortie.
  Celle-ci apporte de nombreuses amliorations, directement visibles ou
  plus internes, tout en restant compatible avec les anciennes versions
  du langage (il faut noter que certains scripts crits pour _p_e_r_l
  version 1 fonctionnent encore sans changement avec la version
  actuelle).

  La compatibilit n'est cependant pas totale : un certain nombre
  d'incompatibilits mineures ont t introduites et peuvent obliger 
  reprendre certains scripts. L'exemple le plus courant est le fait que
  le caractre @@ doit maintenant tre prcd d'un _b_a_c_k_s_l_a_s_h 
  l'intrieur d'une chane de caractres, afin que le @@ ne soit pas
  interprt comme un prfixe de tableau.

  L'ensemble des incompatibilits, ainsi que les piges les plus
  courants pour les personnes utilisant _C ou _a_w_k sont prsents dans la
  page de manuel ppeerrllttrraapp

  Cet article est consacr principalement  _p_e_r_l_5, et plus
  spcifiquement _p_e_r_l_5_._0_0_3 ou suprieur. Cette dernire version est en
  effet celle qui est la plus pratique  utiliser ou installer, et la
  seule activement maintenue.

  11..44..  QQuu''aappppoorrttee ppeerrll55 ppaarr rraappppoorrtt  llaa vveerrssiioonn pprrccddeennttee ??

  Voil quelques unes des amliorations les plus videntes:

    des structures de donnes complexes, grce  l'introduction des
     rfrences ;

    une approche oriente-objet, dont l'intrt n'est pas simplement
     acadmique: elle a permis en effet le dveloppement de divers
     ``modules'' rendant l'criture des scripts encore plus simple et
     plus rapide ;

    les expressions rgulires sont maintenant plus puissantes, et la
     possibilit est offerte de placer des commentaires  l'intrieur,
     afin d'expliquer leur fonctionnement ;

    la possibilit d'ajouter facilement de nouvelles fonctionnalits
     venant de librairies C grce au langage d'extension _X_S (voir les
     pages de manuel ppeerrllxxss et ppeerrllxxssttuutt).

  22..  OO ttrroouuvveerr lleess ffiicchhiieerrss,, iinnddiissppeennssaabblleess oouu ssuuppeerrfflluuss ??

  22..11..  SSuurr llee WWWWWW

  Le principal site WWW sur _p_e_r_l est maintenu par Tom Christiansen, un
  des gourous de _p_e_r_l. Son adresse est  <hhttttpp::////wwwwww..ppeerrll..ccoomm//>. Il
  contient de nombreux documents sur tous les aspects de _p_e_r_l, du plus
  technique au plus gnral en passant par les invitables guerres de
  religion entre les partisans de diffrents langages (_p_e_r_l, _p_y_t_h_o_n,
  _t_c_l, etc).

  De nombreux pointeurs vers d'autres sites y sont galement prsents.
  C'est donc une mine de renseignements, que l'on peut galement visiter
  uniquement par curiosit.

  Il propose galement un service permettant d'accder de manire
  transparente au site ``CPAN'' le plus prs de chez vous.

  22..22..  PPaarr ffttpp

  Fin 1995, le besoin s'est fait sentir de regrouper les efforts de la
  communaut _p_e_r_l afin d'viter d'avoir  rinventer la roue  chaque
  fois. De cette ide est n le CPAN, pour _C_o_m_p_r_e_h_e_n_s_i_v_e _P_e_r_l _A_r_c_h_i_v_e
  _N_e_t_w_o_r_k, d'un principe analogue au CTAN pour TeX.

  Le site principal  <ffttpp::////ffttpp..ffuunneett..ffii//ppuubb//llaanngguuaaggeess//ppeerrll//CCPPAANN//>
  centralise les sources, la documentation ainsi que les nombreux
  modules existants. Il est ensuite _m_i_r_r_o_r_i_s_ sur l'ensemble des sites
  constituant le CPAN, assurant ainsi un temps d'accs convenable.

  En France, il existe deux sites CPAN:

    <ffttpp::////ffttpp..iibbpp..ffrr//ppuubb//ppeerrll//CCPPAANN//>

    <ffttpp::////ffttpp..ppaasstteeuurr..ffrr//ppuubb//ccoommppuuttiinngg//uunniixx//ppeerrll//CCPPAANN//>

  La lecture du fichier ROADMAP prsent dans le rpertoire principal de
  ces sites est un bon point de dpart pour se retrouver dans son
  architecture.

  Si vous cherchez un module particulier, allez voir la liste des
  modules, poste rgulirement dans le groupe ccoommpp..llaanngg..ppeerrll..mmoodduulleess et
  disponible sur les sites ``CPAN''.

  22..33..  PPaarr UUsseenneett

  _p_e_r_l est galement prsent dans l'arboresence Usenet. Le groupe
  initial, ccoommpp..llaanngg..ppeerrll a subi en 1995 une rorganisation, suite au
  trafic important qu'il supportait, et les groupes suivants sont
  maintenant disponibles:

     ccoommpp..llaanngg..ppeerrll..aannnnoouunnccee
        Groupe modr  faible trafic, destin  recevoir les annonces
        concernant _p_e_r_l, ses modules ainsi que les FAQs ;

     ccoommpp..llaanngg..ppeerrll..mmiisscc
        Groupe gnral sur _p_e_r_l ;

     ccoommpp..llaanngg..ppeerrll..mmoodduulleess
        Utilisation et dveloppement des modules ;

     ccoommpp..llaanngg..ppeerrll..ttkk
         propos du module Tk de _p_e_r_l.

  33..  OO ttrroouuvveerr ddee llaa ddooccuummeennttaattiioonn ??

  33..11..  EEnn lliiggnnee

  33..11..11..  AAccccss

  Depuis la version 5 de _p_e_r_l un effort particulier a t port sur la
  documentation en ligne. L'unique page de manuel ppeerrll a t rcrite et
  spare en plusieurs fichiers, afin de faciliter sa consultation. Pour
  voir les diffrentes pages disponibles, il suffit de rentrer la
  commande

       % man perl

  ou encore, si les pages de manuel n'ont pas t installes
  correctement sur votre systme

  % perldoc perl

  33..11..22..  OOrrggaanniissaattiioonn

  Si l'on a l'intention de lire l'ensemble des pages (ce qui se fait
  trs bien), il est conseill de les lire dans l'ordre propos. Si l'on
  cherche la syntaxe d'une commande particulire, il faut consulter le
  document ppeerrllffuunncc. Pour une rfrence complte sur les expressions
  rgulires, consulter le document ppeerrllrree

  33..11..33..  DDooccuummeennttaattiioonn ddeess mmoodduulleess

  _P_O_D, un nouveau format de documentation a t introduit dans _p_e_r_l_5. Il
  signifie _P_l_a_i_n _O_l_d _D_o_c_u_m_e_n_t_a_t_i_o_n et sa syntaxe est dcrite dans le
  document ppeerrllppoodd.

  C'est un format trs simple, ne disposant pas de grandes possibilits
  mais largement suffisant pour crire des pages de manuel. De nombreux
  convertisseurs existent pour le convertir ensuite dans d'autres
  formats: texte, nroff, LaTeX, html. On dispose ainsi d'une
  documentation unique et facilement consultable quel que soit le moyen
  dont on dispose.

  Un autre de ses avantages est qu'il est prvu pour tre directement
  intgr dans du code _p_e_r_l. Ainsi, la plupart des modules contiennent
  leur propre documentation. Pour accder  la documentation du module
  FFiillee::::CCooppyy par exemple, il suffit d'excuter la commande

       % perldoc File::Copy

  Il est possible d'appliquer les convertisseurs du format _P_O_D (ppoodd22ttxxtt,
  ppoodd22hhttmmll, ppoodd22mmaann, ppoodd22hhttmmll) directement sur les modules ou les
  scripts, afin d'en extraire cette documentation.

  33..22..  SSuurr llee WWWWWW

  J'ai dj parl du site  <hhttttpp::////wwwwww..ppeerrll..ccoomm//>, qui contient des
  pointeurs vers de la documentation en ligne ou vers divers livres
  consacrs  _p_e_r_l.

  De nombreux tutoriaux, le plus souvent en anglais, sont galement
  disponibles. Il suffit de rentrer les termes de recherche _p_e_r_l et
  _t_u_t_o_r_i_a_l dans un moteur de recherche pour les obtenir. Je ne peux pas
  vraiment en conseiller un, tant donn que la documentation standard
  de _p_e_r_l m'a toujours suffi.

  33..33..  DDee vvrraaiiss lliivvrreess

  De nombreux livres existent, du livre de rfrence au simple tutorial.
  La liste la plus  jour de ces ouvrages est disponible sur le site WWW
  <hhttttpp::////wwwwww..ppeerrll..ccoomm//>,  l'URL
  <hhttttpp::////wwwwww..ppeerrll..ccoomm//ppeerrll//iinnffoo//bbooookkss..hhttmmll>.

  Les ouvrages de rfrence, car crits par Larry Wall, l'auteur du
  langage, et d'autres spcialistes (Tom Christiansen, Randal L.
  Schwartz), sont:

     PPrrooggrraammmmiinngg PPeerrll
        aussi appel le _C_a_m_e_l _B_o_o_k  cause de l'image de dromadaire
        prsente sur sa couverture. C'est l'ouvrage de rfrence pour
        _p_e_r_l. Une version est en cours de rcriture pour intgrer les
        nouvelles fonctionnalits de _p_e_r_l_5. Sa date de sortie est prvue
        pour septembre 1996.

     LLeeaarrnniinngg PPeerrll
        C'est un tutorial, couvrant uniquement les possibilits de
        _p_e_r_l_4. Une traduction franaise est disponible.

  _(_A_t_t_e_n_t_i_o_n_, _p_u_b_) J'ai galement crit un document d'introduction 
  perl en franais, dont les versions Postscript et dvi sont disponibles
   l'adresse  <hhttttpp::////wwwwww--eelleevveess..eennsstt--bbrreettaaggnnee..ffrr//~~aauubbeerrtt//ppeerrll//>.

  44..  IInnffoorrmmaattiioonnss ccoommppllmmeennttaaiirreess

  Dans cette section se trouvent - pour l'instant - des informations
  pouvant tre utiles aux personnes dsirant installer des modules.
  D'autres informations plus spcifiques pourront y tre ajoutes, sur
  demande.

  44..11..  IInnssttaallllaattiioonn ddee mmoodduulleess

  L'introduction des modules et du langage d'extension _X_S a grandement
  facilit la vie des programmeurs ainsi que des utilisateurs.  Un
  mcanisme (MMaakkeeMMaakkeerr) a t dvelopp afin de rendre l'installation de
  nouveau modules la plus simple possible. J'en parlerai ici du point de
  vue de la personne qui doit installer un nouveau module. Ce que je
  dcris est valable surtout pour les systmes grant les librairies
  dynamiques. La marche  suivre pour les autres systmes (librairies
  statiques) est presque identique mais impose de recompiler une
  nouvelle version de l'interprteur ppeerrll.

  44..11..11..  DDmmaarrcchhee ggnnrraallee

  Voyons dans un premier temps la dmarche gnrale, adapte pour tous
  les modules simples. Aprs avoir dtarr l'archive du module et tre
  all dans le rpertoire ainsi cr, il suffit de procder ainsi:

       % less README
       % less INSTALL
       % perl Makefile.PL
       % make
       % make test
       % make install

  44..11..22..  UUnn eexxeemmppllee pplluuss ddvveelloopppp

  Prenons l'exemple du module _C_u_r_s_e_s qui procure des routines permettant
  de grer la gestion d'un cran en mode texte. Il ne vient pas avec la
  distribution standard de _p_e_r_l, il faut donc aller le rcuprer sur un
  des sites ``CPAN'' ; il se trouve dans la catgorie _U_s_e_r _I_n_t_e_r_f_a_c_e_s.

  Il faut ensuite dtarrer le fichier archive rapatri dans un
  rpertoire quelconque. Rappelons aux utilisateurs de Linux qu'il est
  dconseill de compiler quoi que ce soit en tant root : mieux vaut le
  faire en tant qu'utilisateur normal, puis passer root pour faire
  l'installation uniquement.

  Dans le rpertoire CCuurrsseess--11..00 ainsi cr se trouvent plusieurs
  fichiers et rpertoires dont nous allons voir les plus importants.

  En premier lieu, bien lire les fichiers RREEAADDMMEE et IINNSSTTAALLLL. La marche 
  suivre y est indique. Dans le cas de _C_u_r_s_e_s qui est un paquetage
  variant beaucoup d'une machine  l'autre, il faut copier  la main le
  fichier du rpertoire hhiinnttss correspondant  son architecture dans le
  fichier cc--ccoonnffiigg..hh et diter le fichier MMaakkeeffiillee..PPLL pour dcommenter
  les lignes relatives  son systme d'exploitation.

  Je vous rassure, _C_u_r_s_e_s fait partie des modules impliquant le plus de
  manipulations. Dans la plupart des cas, comme par exemple pour _G_D ou
  _M_s_q_l, il suffit d'avoir auparavant install les librairies adquates
  sur son systme si elles n'y taint pas dj.

  Il faut ensuite lancer la commande

       % perl
       Makefile.PL

  qui va faire un certain nombre de tests et crer le fichier MMaakkeeffiillee.
  Un simple mmaakkee doit ensuite suffire  construire l'extension.

  %% mmaakkee tteesstt lance une srie de tests afin de vrifier que le module
  est correctement compil. Il suffit enfin de passer root pour faire le
  %% mmaakkee iinnssttaallll qui ira installer les fichiers ncessaires dans les
  bons rpertoires (gnralement, //uussrr//llooccaall//lliibb//ppeerrll55//ssiittee__ppeerrll// ou
  //uussrr//lliibb//ppeerrll55//ssiittee__ppeerrll//).

  44..22..  CCoommmmeenntt iinnssttaalllleerr uunn mmoodduullee ssaannss aavvooiirr lleess ddrrooiittss rroooott ??

  Les modules sont installs par dfaut dans le rpertoire standard des
  librairies de _p_e_r_l. Si vous avez besoin d'un module mais que vous
  n'avez pas les droits sur l'arborescence //uussrr//llooccaall, il est toujours
  possible d'installer des modules dans votre rpertoire personnel, en
  prcisant pour cela le rpertoire adquat lors de la gnration du
  fichier MMaakkeeffiillee:

       % perl Makefile.PL PREFIX=~

  ce qui va installer les modules dans le rpertoire $$HHOOMMEE//lliibb.  Pour y
  accder, il suffit de commencer le script par:

       #!/usr/local/bin/perl

       use lib "$ENV{HOME}/lib";

  La documentation complte des attributs d'installation pouvant tre
  fixs est disponible par la commande:

       % perldoc ExtUtils::MakeMaker

