.\" Automatically generated by Pod::Man 2.06 (Pod::Simple 3.04) .\" .\" Standard preamble: .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. | will give a .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' .\" expand to `' in nroff, nothing in troff, for use with C<>. .tr \(*W-|\(bv\*(Tr .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .\" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .hy 0 .if n .na .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PERLRUN 1" .TH PERLRUN 1 "2006-03-03" "DocFr" "User Contributed Perl Documentation" .SH "NAME/NOM" .IX Header "NAME/NOM" perlrun \- Comment utiliser l'interpre\*'teur Perl .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBperl\fR [\ \fB\-CsTuUWX\fR\ ] [\ \fB\-hv\fR\ ]\ [\ \fB\-V\fR[:\fIconfigvar\fR]\ ] [\ \fB\-cw\fR\ ]\ [\ \fB\-d\fR[:\fIdebugger\fR]\ ]\ [\ \fB\-D\fR[\fInumber/list\fR]\ ] [\ \fB\-pna\fR\ ]\ [\ \fB\-F\fR\fIpattern\fR\ ]\ [\ \fB\-l\fR[\fIoctal\fR]\ ]\ [\ \fB\-0\fR[\fIoctal\fR]\ ] [\ \fB\-I\fR\fIdir\fR\ ]\ [\ \fB\-m\fR[\fB\-\fR]\fImodule\fR\ ]\ [\ \fB\-M\fR[\fB\-\fR]\fI'module...'\fR\ ] [\ \fB\-P\fR\ ] [\ \fB\-S\fR\ ] [\ \fB\-x\fR[\fIdir\fR]\ ] [\ \fB\-i\fR[\fIextension\fR]\ ] [\ \fB\-e\fR\ \fI'command'\fR\ ]\ [\ \fB\-\-\fR\ ]\ [\ \fIprogramfile\fR\ ]\ [\ \fIargument\fR\ ]... .SH "DESCRIPTION" .IX Header "DESCRIPTION" La fac\*,on habituelle d'exe\*'cuter un programme Perl est de le rendre directement exe\*'cutable ou bien de passer le nom du fichier source comme argument de ligne de commande (Un environnement Perl interactif est aussi possible \*(-- voir perldebug pour plus de de\*'tails sur son utilisation). Au lancement, Perl recherche votre script a\*` un des endroits suivants: .IP "1." 4 Spe\*'cifie\*' ligne par ligne par l'interme\*'diaire d'options \fB\-e\fR sur la ligne de commande. .IP "2." 4 Contenu dans le fichier spe\*'cifie\*' par le premier nom de fichier sur la ligne de commande. (Notez que les syste\*`mes qui supportent la notation #! invoquent les interpre\*'teurs de cette manie\*`re. Cf. \*(L"Localisation Perl\*(R".) .IP "3." 4 Passe\*' implicitement sur l'entre\*'e standard. Cela ne marche que s'il n'y a pas de noms de fichiers comme argument \*(-- pour passer des arguments a\*` un programme lisant sur \s-1STDIN\s0, vous devez explicitement spe\*'cifier un \&\*(L"\-\*(R" pour le nom du script. .PP Avec les me\*'thodes 2 et 3, Perl de\*'marre l'analyse du fichier d'entre\*'e a\*` partir du de\*'but, a\*` moins de rajouter une option \fB\-x\fR. Dans ce cas, il cherche la premie\*`re ligne qui commence par #! et contient le mot \&\*(L"perl\*(R". L'interpre\*'tation commence a\*` partir de cette ligne. C'est utile pour lancer un programme contenu dans un message plus grand (par exemple dans un courrier e\*'lectronique ou un article Usenet, \s-1NDT\s0). Dans ce genre de cas, la fin du programme doit e\*^tre indique\*'e par _\|_END_\|_. .PP Lorsque la ligne commenc\*,ant par #! est analyse\*'e, des options e\*'ventuelles sont toujours recherche\*'es. Ainsi, si vous e\*^tes sur une machine qui n'autorise qu'un seul argument avec la ligne #!, ou pire, ne reconnait pas la ligne #!, vous pouvez toujours obtenir un comportement homoge\*`ne des options, quelque soit la manie\*`re dont Perl a e\*'te\*' invoque\*', me\*^me si \fB\-x\fR a e\*'te\*' utilise\*' pour trouver le de\*'but du programme. .PP Puisque historiquement certains syste\*`mes d'exploitation arre\*^taient l'interpre\*'tation de la ligne #! par le noyau a\*` partir de 32 caracte\*`res, certaines options peuvent e\*^tre passe\*'es sur la ligne de commande, d'autres pas ; vous pouvez me\*^me vous retrouver avec un \*(L"\-\*(R" sans sa lettre au lieu d'une option comple\*`te, si vous n'y faites pas attention. Vous voudrez probablement vous assurer que toutes vos options tombent d'un co\*^te\*' ou de l'autre de la frontie\*`re des 32 caracte\*`res. La plupart des options ne se soucient pas d'e\*^tre traite\*'es de fac\*,on redondante, mais obtenir un \*(L"\-\*(R" au lieu d'une option comple\*`te pourrait pousser Perl a\*` essayer d'exe\*'cuter l'entre\*'e standard au lieu de votre programme. Une option \fB\-I\fR incomple\*`te pourrait aussi donner des re\*'sultats e\*'tranges. .PP Certaines options sont sensibles au nombre de fois ou\*` elles sont pre\*'sentes sur la ligne de commande, par exemple, les combinaisons des options \fB\-l\fR et \fB\-0\fR. Il faut soit mettre toutes les options apre\*`s la limite des 32 caracte\*`res (si possible), soit remplacer les utilisations de \fB\-0\fR\fIdigits\fR par \f(CW\*(C`BEGIN{ $/ = "\e0digits"; }\*(C'\fR. .PP L'analyse des options commence de\*`s que \*(L"perl\*(R" est mentionne\*' sur la ligne. Les se\*'quences \*(L"\-*\*(R" et \*(L"\- \*(R" sont spe\*'cialement ignore\*'es de telle manie\*`re que vous puissiez e\*'crire (si l'envie vous en prend), disons .PP .Vb 3 \& #!/bin/sh \-\- # \-*\- perl \-*\- \-p \& eval 'exec perl \-wS $0 ${1+"$@"}' \& if $running_under_some_shell; .Ve .PP pour permettre a\*` Perl de voir l'option \fB\-p\fR. .PP Un truc similaire implique le programme \fBenv\fR, si vous le posse\*'dez. .PP .Vb 1 \& #!/usr/bin/env perl .Ve .PP Les exemples ci-dessus utilisant un chemin relatif vers l'interpre\*'teur perl, atteignant la premie\*`re version trouve\*'e dans le chemin de l'utilisateur. Si vous voulez une version spe\*'cifique de Perl, disons, perl5.005_57, vous devez le placer directement dans le chemin de la ligne #! . .PP Si la ligne #! ne contient pas le mot \*(L"perl\*(R", le programme indique\*' apre\*`s le #! est lance\*' au lieu de l'interpre\*'teur Perl. C'est assez bizarre, mais cela aide les gens qui utilisent des machines qui ne reconnnaissent pas #!, car ainsi ils peuvent indiquer a\*` un programme que leur \s-1SHELL\s0 est \fI/usr/bin/perl\fR, et Perl va alors envoyer le program vers le bon interpre\*'teur pour eux. .PP Apre\*`s avoir localise\*' votre programme, Perl le compile en une forme interne. Si il y a ne serait-ce qu'un erreur de compilation, l'exe\*'cution du programme n'est pas tente\*'e (c'est diffe\*'rent du script shell de base, qui peut e\*^tre exe\*'cute\*' a\*` moitie\*' avant de de\*'tecter une erreur de syntaxe). .PP Si le programme est syntaxiquement correct, il est exe\*'cute\*'. Si le programme se termine sans rencontrer un ope\*'rateur \fIdie()\fR ou \fIexit()\fR, un \&\f(CWexit(0)\fR implicite est ajoute\*' pour indiquer une exe\*'cution re\*'ussie. .Sh "#! et l'isolement (quoting) sur les syste\*`mes non-Unix" .IX Subsection "#! et l'isolement (quoting) sur les syste`mes non-Unix" La technique #! d'Unix peut e\*^tre simule\*'e sur les autres syste\*`mes: .IP "\s-1OS/2\s0" 4 .IX Item "OS/2" Ajouter .Sp .Vb 1 \& extproc perl \-S \-vos_options .Ve .Sp sur la premie\*`re ligne de vos fichiers \f(CW\*(C`*.cmd\*(C'\fR (le \fB\-S\fR est du\*^ a\*` un bug dans la manie\*`re dont cmd.exe ge\*`re `extproc'). .IP "MS-DOS" 4 .IX Item "MS-DOS" Cre\*'ez un fichier de commande (batch) pour lancer votre programme, et placez son nom dans \f(CW\*(C`ALTERNATIVE_SHEBANG\*(C'\fR (\*(L"#!\*(R" se prononce She Bang, cf. Jargon File, \s-1NDT\s0). Pour plus d'informations a\*` ce sujet, voir le fichier \fIdosish.h\fR dans les sources de la distribution. .IP "Win95/NT" 4 .IX Item "Win95/NT" L'installation Win95/NT, en tout cas l'installeur Activestate pour Perl, va modifier la Base de Registre pour associer l'extension \fI.pl\fR avec l'interpre\*'teur Perl. Si vous installez Perl par d'autres moyens (y compris la compilation a\*` partir des sources), vous devrez modifier la base de registre vous\-me\*^me. Notez que cela implique que vous ne pourrez plus faire la diffe\*'rence entre un exe\*'cutable Perl et une bibliothe\*`que Perl. .IP "Macintosh" 4 .IX Item "Macintosh" Les programmes Perl Macintosh auront le Creator et le Type ade\*'quat, donc un double-clic lancera l'application Perl. .IP "\s-1VMS\s0" 4 .IX Item "VMS" Mettez .Sp .Vb 2 \& $ perl \-mysw 'f$env("procedure")' 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8' ! \& $ exit++ + ++$status != 0 and $exit = $status = undef; .Ve .Sp au de\*'but de votre programme, ou\*` \f(CW\*(C`\-mysw\*(C'\fR repre\*'sente toutes les options de ligne de commande que vous voulez passer a\*` Perl. Vous pouvez de\*'sormais invoquer le programme directement, en disant \f(CW\*(C`perl programme\*(C'\fR, ou en tant que proce\*'dure \s-1DCL\s0, en disant \f(CW@programme\fR (ou implicitement via \fI\s-1DCL$PATH\s0\fR en utilisant juste le nom du programme). .Sp Cette incantation est un peu difficile a\*` me\*'moriser, bmais Perl l'affichera pour vous si vous dites \f(CW\*(C`perl "\-V:startperl"\*(C'\fR. .PP Les interpre\*'teurs de commandes des syste\*`mes non-Unix ont des ide\*'es pluto\*^t diffe\*'rentes des shells Unix concernant l'isolement (quoting). Il vous faudra apprendre quels sont les caracte\*`res spe\*'ciaux de votre interpre\*'teur de commande (\f(CW\*(C`*\*(C'\fR, \f(CW\*(C`\e\*(C'\fR et \f(CW\*(C`"\*(C'\fR sont courants), et comment prote\*'ger les espaces et ces caracte\*`res pour lancer des one-liners [Ndt] scripts sur une seule ligne [Fin de Ndt] (cf. \fB\-e\fR plus bas). .PP Sur certains syste\*`mes, vous devrez peut\-e\*^tre changer les apostrophes (single\-quote) en double (guillemets), ce qu'il ne faut \fIpas\fR faire sur les syste\*`mes Unix ou Plan9. Vous devrez peut\-e\*^tre aussi changer le signe % seul en %%. .PP Par exemple: .PP .Vb 2 \& # Unix \& perl \-e 'print "Hello world\en"' \& \& # MS\-DOS, etc. \& perl \-e "print \e"Hello world\en\e"" \& \& # Macintosh \& print "Hello world\en" \& (puis Run "Myscript" ou Shift\-Command\-R) \& \& # VMS \& perl \-e "print ""Hello world\en""" .Ve .PP Le proble\*`me, c'est qu'aucun de ces exemples n'est absolument su\*^r de marcher: cela de\*'pend de la commande et il est possible qu'aucune forme ne fonctionne. Si l'interpre\*'teur de commande e\*'tait \fB4DOS\fR, ceci marcherait probablement mieux : .PP .Vb 1 \& perl \-e "print "Hello world\en"" .Ve .PP \&\fB\s-1CMD\s0.EXE\fR dans Windows \s-1NT\s0 a re\*'cupe\*'re\*' beaucoup de fonctionnalite\*'s Unix lorsque tout le monde avait le dos tourne\*', mais essayez de trouver de la documentation sur ses re\*`gles d'isolement ! .PP Sur Macintosh, cela de\*'pend de l'environnement que vous utilisez. Le shell MacPerl, ou \s-1MPW\s0, est tre\*`s proche des shells Unix pour son support de diffe\*'rentes variantes d'isolement, si ce n'est qu'il utilise alle\*`grement les caracte\*`res Macintosh non \s-1ASCII\s0 comme caracte\*`res de contro\*^le. .PP Il n'y a pas de solution ge\*'ne\*'rale a\*` ces proble\*`mes. C'est juste le foutoir. .Sh "Localisation Perl" .IX Subsection "Localisation Perl" Cela peut sembler e\*'vident, mais Perl est seulement utile quand les utilisateurs y ont facilement acce\*`s. Autant que possible, il est bon d'avoir \fI/usr/bin/perl\fR et \fI/usr/local/bin/perl\fR comme liens symboliques (symlinks) vers le bon binaire. Si cela n'est pas possible, les administrateurs syste\*`mes sont encourage\*'s a\*` mettre (des symllinks vers) perl et ses utilitaires associe\*'s, dans un re\*'pertoire fre\*'quemment pre\*'sent pre\*'sent dans le \s-1PATH\s0 des utilisateurs, ou encore dans un quelconque autre endroit pratique ou e\*'vident. .PP Dans cette documentation, \f(CW\*(C`#!/usr/bin/perl\*(C'\fR dans la premie\*`re ligne d'un programme, indiquera ce qui marche sur votre syste\*`me. Nous vous conseillons d'utiliser un chemin spe\*'cifique si vous avez besoin d'une version particulie\*`re. .PP .Vb 1 \& #!/usr/local/bin/perl5.00554 .Ve .PP ou si vous voulez juste utiliser une version minimale, placez une instruction telle que celle-ci au de\*'but de votre programme : .PP .Vb 1 \& use 5.005_54; .Ve .Sh "Options de Ligne de Commande" .IX Subsection "Options de Ligne de Commande" Comme pour toutes les commandes standard, une option mono\-caracte\*`re peut e\*^tre combine\*'e avec l'option suivante, le cas e\*'che\*'ant. .PP .Vb 1 \& #!/usr/bin/perl \-spi.orig # e\*'quivalent a\*` \-s \-p \-i.orig .Ve .PP Les options comprennent: .IP "\fB\-0\fR[\fIdigits\fR]" 5 .IX Item "-0[digits]" indique le se\*'parateur denregistrment en entre\*'e (\f(CW$/\fR) en notation octale. S'il n'y a pas de chiffres, le caracte\*`re nul (\s-1ASCII\s0 0) est le se\*'parateur. D'autres options peuvent suivre ou pre\*'ce\*'der les chiffres. Par exemple, si vous avez une version de \fBfind\fR qui peut afficher les noms de fichiers termine\*'s par des carate\*`res nul, vous pouvez e\*'crire ceci: .Sp .Vb 1 \& find . \-name '*.orig' \-print0 | perl \-n0e unlink .Ve .Sp La valeur spe\*'ciale 00 va indiquer a\*` Perl d'avaler les fichiers en mode paragraphes. La valeur 0777, indique a\*` Perl d'avaler les fichiers en entier car il n'y a pas de caracte\*`re avec cette valeur octale. .IP "\fB\-a\fR" 5 .IX Item "-a" active le mode auto\-de\*'coupage (autosplit) avec \fB\-n\fR ou \fB\-p\fR. Une comande split implicite du tableau \f(CW@F\fR est faite comme premie\*`re action, a\*` l'inte\*'rieur de la boucle while implicite produite par \fB\-n\fR ou \&\fB\-p\fR. .Sp .Vb 1 \& perl \-ane 'print pop(@F), "\en";' .Ve .Sp est e\*'quivalent a\*` .Sp .Vb 4 \& while (<>) { \& @F = split(' '); \& print pop(@F), "\en"; \& } .Ve .Sp Un autre se\*'parateur [Ndt] que espace ' '[Fin Ndt] peut e\*^tre spe\*'cifie\*' avec \fB\-F\fR. .IP "\fB\-C\fR" 5 .IX Item "-C" permet a\*` Perl d'utiliser les \s-1API\s0 natives pour caracte\*`res larges sur le syste\*`me cible. La variable magique \f(CW\*(C`${^WIDE_SYSTEM_CALLS}\*(C'\fR refle\*`te l'e\*'tat de cette option. Voir \*(L"${^WIDE_SYSTEM_CALLS}\*(R" in perlvar. .Sp Cette caracte\*'ristique n'est couramment imple\*'mente\*'e que sur la plate-forme Win32. .IP "\fB\-c\fR" 5 .IX Item "-c" indique a\*` Perl de ve\*'rifier la syntaxe du programme et de sortir ensuite sans l'exe\*'cuter. En fait, il \fIva\fR exe\*'cuter \f(CW\*(C`BEGIN\*(C'\fR, \f(CW\*(C`CHECK\*(C'\fR, et les blocs \f(CW\*(C`use\*(C'\fR, car ils sont conside\*'re\*'s comme existants en dehors de l'exe\*'cution de votre programme. Les blocs \f(CW\*(C`INIT\*(C'\fR et \f(CW\*(C`END\*(C'\fR seront toutefois passe\*'s. .IP "\fB\-d\fR" 5 .IX Item "-d" lance le programme sous le de\*'bogueur (debugger) Perl. Cf. perldebug. .IP "\fB\-d:\fR\fIfoo\fR" 5 .IX Item "-d:foo" lance le programme sous le contro\*^le d'un module de trace, de profilage ou de de\*'bogage installe\*' sous le nom Devel::foo. C'est\-a\*`\-dire que \&\fB\-d:DProf\fR exe\*'cute le programme en utilisant le profileur Devel::DProf. Cf. perldebug. .IP "\fB\-D\fR\fIletters\fR" 5 .IX Item "-Dletters" .PD 0 .IP "\fB\-D\fR\fInumber\fR" 5 .IX Item "-Dnumber" .PD fixe les drapeaux (flags) de de\*'bogage de Perl. Pour voir comment il exe\*'cute votre programme, utilisez \fB\-Dtls\fR. (Cela ne fonctionne que si le support du de\*'bogage est compile\*' dans votre interpre\*'teur Perl). Une autre valeur inte\*'ressante est \fB\-Dx\fR, qui affiche l'arbre syntaxique compile\*'. Et \fB\-Dr\fR affiche les expressions rationnelles compile\*'es. Vous pouvez donner des nombres a\*` la place des listes de lettres (par exemple, \fB\-D14\fR est e\*'quivalent a\*` \fB\-Dtls\fR): .Sp .Vb 10 \& 1 p De\*'coupage en symboles et analyse \& 2 s Cliche\*'s de la pile \& 4 l Traitement des piles de contextes (Context (loop) stack processing) \& 8 t Exe\*'cution trace\*'e (Trace execution) \& 16 o Re\*'solution et surcharge de me\*'thodes \& 32 c Conversions chai\*^nes/nombres \& 64 P Affiche les commandes du pre\*'\-processeur pour \-P \& 128 m Allocation me\*'moire \& 256 f Traitement des formats \& 512 r Analyse et exe\*'cution des expressions rationnelles \& 1024 x Affichage de l'arbre syntaxique \& 2048 u Ve\*'rification d'inte\*'grite\*' \& 4096 L Fuites de me\*'moire (ne\*'cessite \-DLEAKTEST a\*` la compilation de Perl) \& 8192 H Affiche les hash (usurps values()) \& 16384 X Allocation scratchpad \& 32768 D Nettoyage \& 65536 S Synchronisation des fils d'exe\*'cution .Ve .Sp Tous ces drapeaux ne\*'cessitent \fB\-DDEBUGGING\fR quand vous compilez l'exe\*'cutable Perl. Voir le fichier \fI\s-1INSTALL\s0\fR dans la distribution des sources de Perl pour savoir comment le faire. Ce drapeau est automatiquement rajoute\*' si vous compilez avec l'option \f(CW\*(C`\-g\*(C'\fR quand \&\f(CW\*(C`Configure\*(C'\fR vous demande les drapeaux de votre optimiseur/de\*'bogueur. .Sp Si vous essayez juste d'obtenir l'affichage de chaque ligne de code Perl au fil de l'exe\*'cution, a\*` la fac\*,on dont \f(CW\*(C`sh \-x\*(C'\fR le fournit pour les scripts shell, vous ne pouvez pas utilise l'option \fB\-D\fR de Perl. Faites ceci a\*` la place .Sp .Vb 2 \& # Syntaxe du Bourne shell \& $ PERLDB_OPTS="NonStop=1 AutoTrace=1 frame=2" perl \-dS program \& \& # Syntax csh \& % (setenv PERLDB_OPTS "NonStop=1 AutoTrace=1 frame=2"; perl \-dS program) .Ve .Sp Voir perldebug pour plus de de\*'tails et des variantes. .IP "\fB\-e\fR \fIcommandline\fR" 5 .IX Item "-e commandline" peut e\*^tre utilise\*' pour entrer une ligne de programme. Si \fB\-e\fR est pre\*'sent, Perl ne va pas chercher de nom de fichier dans la liste des arguments. De multiples commandes \fB\-e\fR peuvent e\*^tre donne\*'es pour cre\*'er des scripts multi\-lignes. Assurez vous que vous mettez bien des points-virgules la\*` ou\*` vous en mettriez dans un programme normal. .IP "\fB\-F\fR\fIpattern\fR" 5 .IX Item "-Fpattern" indique le motif a\*` utiliser pour l'auto\-de\*'coupage si \fB\-a\fR est aussi pre\*'sent. Le motif peut e\*^tre de\*'limite\*' par \f(CW\*(C`//\*(C'\fR, \f(CW""\fR, ou \f(CW''\fR, sinon il sera mis entre apostrophes. .IP "\fB\-h\fR" 5 .IX Item "-h" affiche un re\*'sume\*' des options. .IP "\fB\-i\fR[\fIextension\fR]" 5 .IX Item "-i[extension]" indique que les fichiers traite\*'s par la forme \f(CW\*(C`<>\*(C'\fR doivent e\*^tre e\*'dite\*'s en place. Cela est accompli en renommant le fichier source, en ouvrant le fichier re\*'sultat sous le nom initial, et en se\*'lectionnant ce fichier de re\*'sultat comme sortie par de\*'faut pour les instructions \fIprint()\fR. L'extension, le cas e\*'che\*'ant, est utilise\*'e pour modifier le nom du fichier source pour faire une copie de sauvegarede, suivant ces re\*`gles: .Sp Si aucune extension n'est fournie, aucune sauvegarde n'est faite et le fichier source est e\*'crase\*'. .Sp Si l'extension ne contient pas d'e\*'toile (\f(CW\*(C`*\*(C'\fR), elle est ajoute\*'e a\*` la fin du nom de fichier courant comme suffixe. Si l'extension contient un ou plusieurs caracte\*`res \f(CW\*(C`*\*(C'\fR, chacune des \f(CW\*(C`*\*(C'\fR est remplace\*'e par le nom de fichier courant. En perl, on pourrait l'e\*'crire ainsi : .Sp .Vb 1 \& ($backup = $extension) =~ s/\e*/$file_name/g; .Ve .Sp Cela vous permet d'ajouter un pre\*'fixe au fichier de sauvegarde, au lieu (ou en plus) d'un suffixe: .Sp .Vb 1 \& $ perl \-pi'orig_*' \-e 's/bar/baz/' fileA # sauvegarde en 'orig_fileA' .Ve .Sp Ou me\*^me de placer les sauvegardes des fichiers originaux dans un autre re\*'pertoire (a\*` condition que ce re\*'pertoire existe de\*'ja\*`): .Sp .Vb 1 \& $ perl \-pi'old/*.orig' \-e 's/bar/baz/' fileA # sauvegarde en 'old/fileA.orig' .Ve .Sp Ces exemples sont e\*'quivalents : .Sp .Vb 2 \& $ perl \-pi \-e 's/bar/baz/' fileA # e\*'crase le fichier courant \& $ perl \-pi '*' \-e 's/bar/baz/' fileA # e\*'crase le fichier courant \& \& $ perl \-pi '.orig' \-e 's/bar/baz/' fileA # sauvegarde en 'fileA.orig' \& $ perl \-pi '*.orig' \-e 's/bar/baz/' fileA # sauvegarde en 'fileA.orig' .Ve .Sp A\*` partir du shell, e\*'crire .Sp .Vb 1 \& $ perl \-p \-i.orig \-e "s/foo/bar/; ... " .Ve .Sp revient au me\*^me qu'utiliser le programme : .Sp .Vb 2 \& #!/usr/bin/perl \-pi.orig \& s/foo/bar/; .Ve .Sp qui est e\*'quivalent a\*` .Sp .Vb 10 \& #!/usr/bin/perl \& $extension = '.orig'; \& LINE: while (<>) { \& if ($ARGV ne $oldargv) { \& if ($extension !~ /\e*/) { \& $backup = $ARGV . $extension; \& } \& else { \& ($backup = $extension) =~ s/\e*/$ARGV/g; \& } \& rename($ARGV, $backup); \& open(ARGVOUT, ">$ARGV"); \& select(ARGVOUT); \& $oldargv = $ARGV; \& } \& s/foo/bar/; \& } \& continue { \& print; # affiche le nom du fichier original \& } \& select(STDOUT); .Ve .Sp si ce n'est que l'option \fB\-i\fR ne compare pas \f(CW$ARGV\fR et \f(CW$oldargv\fR pour savoir quand le nom de fichier a change\*'. Cette option utilise par contre, \s-1ARGVOUT\s0 pour l'identificateur de fichier (filehandle). Notez que \s-1STDOUT\s0 est restaure\*' comme sortie par de\*'faut apre\*`s la boucle. .Sp Comme montre\*' ci\-dessus, Perl cre\*'e le fichier de sauvegarde me\*^me si la sortie n'est pas modifie\*'e. C'est donc une manie\*`re amusante de copier des fichiers. .Sp .Vb 3 \& $ perl \-p \-i '/some/file/path/*' \-e 1 file1 file2 file3... \&ou \& $ perl \-p \-i '.orig' \-e 1 file1 file2 file3... .Ve .Sp Vous pouvez utiliser \f(CW\*(C`eof\*(C'\fR sans parenthe\*`ses pour localiser la fin de chaque fichier d'entre\*'e, au cas ou\*` vous voulez ajouter des choses a\*` la fin, ou re\*'initialiser le comptage des lignes (cf. exemples dans \&\*(L"eof\*(R" in perlfunc). .Sp Si, pour un fichier donne\*', Perl n'est pas capable de cre\*'er de fichier de sauvegarde avec l'extension indique\*'e, il ne traitera pas le fichier et passera au suivant (s'il existe). .Sp Pour une discussion des de\*'taille\*'e des permissions des fichiers et \fB\-i\fR, voir \&\*(L"Pourquoi Perl me laisse effacer des fichiers prote\*'ge\*'s en e\*'criture ? Pourquoi \-i e\*'crit dans des fichiers prote\*'ge\*'s ? N'est\-ce pas un bug de Perl ?\*(R" in perlfaq5 .Sp Vous ne pouvez pas utiliser \fB\-i\fR pour cre\*'er des re\*'peroires ou pour enlever des extensions a\*` des fichiers. .Sp Perl ne transforme pas les \f(CW\*(C`~\*(C'\fR en noms de fichiers, ce qui est une bonne chose, puisque certains l'utilisent pour leurs fichiers de sauvegarde : .Sp .Vb 1 \& $ perl \-pi~ \-e 's/foo/bar/' file1 file2 file3... .Ve .Sp Enfin, l'option \fB\-i\fR n'empe\*^che pas l'exe\*'cution quand aucune fichier n'est donne\*' sur la ligne de commande. Dans ce cas, aucune sauvegarde n'est faite (puisque l'original ne peut e\*^tre de\*'termine\*'), et le traitement se fait de \s-1STDIN\s0 vers \s-1STDOUT\s0, comme on peut s'y attendre. .IP "\fB\-I\fR\fIdirectory\fR" 5 .IX Item "-Idirectory" Les re\*'pertoires spe\*'cifie\*'s pas \fB\-I\fR sont ajoute\*'s (en te\*^te) du chemin de recherche des modules (\f(CW@INC\fR), et indiquent au pre\*'\-processeur C ou\*` chercher les fichiers a\*` inclure. Le pre\*'\-processeur C est appele\*' avec \fB\-P\fR; par de\*'faut il cherche dans /usr/include et /usr/lib/perl. .IP "\fB\-l\fR[\fIoctnum\fR]" 5 .IX Item "-l[octnum]" permet le traitement automatique des fins de lignes. Cela a deux effets diffe\*'rents. Premie\*`rement, "\f(CW$/\fR" (le se\*'parateur d'enregistrements en entre\*'e) est automatiquement enleve\*' avec l'une des options \fB\-n\fR ou \fB\-p\fR. Deuxie\*`mement "\f(CW\*(C`$\e\*(C'\fR" (le se\*'parateur d'enregistrements en sortie) rec\*,oit la valeur \fIoctnum\fR de telle manie\*`re que toutes les instructions print aient ce se\*'parateur ajoute\*' a\*` la fin [du \fIprint()\fR]. Si \fIoctnum\fR est omis, "\f(CW\*(C`$\e\*(C'\fR\*(L" prend la valeur de \&\*(R"\f(CW$/\fR". Par exemple, pour limiter les lignes a\*` 80 colonnes : .Sp .Vb 1 \& perl \-lpe 'substr($_, 80) = ""' .Ve .Sp Notez que l'affectation \f(CW\*(C`$\e = $/\*(C'\fR est faite quand l'option est rencontre\*'e, donc le se\*'parateur en entre\*'e peut e\*^tre diffe\*'rent du se\*'parateur en sortie si l'option \fB\-l\fR est suivie de l'option \fB\-0\fR: .Sp .Vb 1 \& gnufind / \-print0 | perl \-ln0e 'print "found $_" if \-p' .Ve .Sp Cela affecte retour-chariot '\en' a\*` \f(CW\*(C`$\e\*(C'\fR et ensuite affecte le caracte\*`re nul (ascii 0) a\*` \f(CW$/\fR. .IP "\fB\-m\fR[\fB\-\fR]\fImodule\fR" 5 .IX Item "-m[-]module" .PD 0 .IP "\fB\-M\fR[\fB\-\fR]\fImodule\fR" 5 .IX Item "-M[-]module" .IP "\fB\-M\fR[\fB\-\fR]\fI'module ...'\fR" 5 .IX Item "-M[-]'module ...'" .IP "\fB\-[mM]\fR[\fB\-\fR]\fImodule=arg[,arg]...\fR" 5 .IX Item "-[mM][-]module=arg[,arg]..." .PD \&\fB\-m\fR\fImodule\fR exe\*'cute \f(CW\*(C`use\*(C'\fR \fImodule\fR \f(CW\*(C`();\*(C'\fR avant d'exe\*'cuter votre programme. .Sp \&\fB\-M\fR\fImodule\fR exe\*'cute \f(CW\*(C`use\*(C'\fR \fImodule\fR \f(CW\*(C`;\*(C'\fR avant d'exe\*'cuter votre programme. Vous pouvez utiliser des apostrophes pour ajouter du code supple\*'mentaire apre\*`s le nom du module, par exemple, \f(CW'\-Mmodule qw(toto titi)'\fR. .Sp Si le premier caracte\*`re apre\*`s \fB\-M\fR ou \fB\-m\fR est un moins (\f(CW\*(C`\-\*(C'\fR), alors le 'use' est remplace\*' par 'no'. .Sp Un peu de sucre syntaxique inte\*'gre\*' permet d'e\*'crire \&\fB\-mmodule=toto,titi\fR ou \fB\-Mmodule=toto,titi\fR comme un raccouci de \&\f(CW'\-Mmodule qw(toto titi)'\fR. Cela e\*'vite de recourir a\*` des apostrophes lorsqu'on importe des symboles. Le code ge\*'ne\*'re\*' par \&\fB\-Mmodule=toto,titi\fR est \f(CW\*(C`use module split(/,/,q{toto,titi})\*(C'\fR. Notez que la forme \f(CW\*(C`=\*(C'\fR fait disparai\*^tre la distinction entre \fB\-m\fR et \&\fB\-M\fR. .IP "\fB\-n\fR" 5 .IX Item "-n" indique a\*` Perl de conside\*'rer votre programme comme entoure\*' par la boucle suivante, qui le fait ite\*'rer sur les noms de fichiers passe\*'s en arguments, a\*` la manie\*`re de \fBsed \-n\fR ou \fBawk\fR : .Sp .Vb 3 \& while (<>) { \& ... # votre script va la\*` \& } .Ve .Sp Notez que les lignes ne sont pas affiche\*'es par de\*'faut. Cf. \fB\-p\fR pour afficher les lignes traite\*'es. Si un fichier passe\*' en argument ne peut pas e\*^tre ouvert, pour quelque raison que ce soit, Perl vous pre\*'vient, et passe au fichier suivant. .Sp Un moyen efficcace d'effacer tous les fichiers age\*'s de plus d'une semaine : .Sp .Vb 1 \& find . \-mtime +7 \-print | perl \-nle unlink .Ve .Sp C'est plus rapide que d'utiliser l'option \fB\-exec\fR de \fBfind\fR, car vous ne lancez plus un processus pour chaque fichier a\*` effacer. Cela souffre du bug entrai\*^nant une mauvaise gestion des fins de lignes dans les chemins, que vous pouvez re\*'gler si vous... [phrase pas termine\*'e dans la \s-1VO\s0, \s-1NDT\s0]. .Sp Les blocs \f(CW\*(C`BEGIN\*(C'\fR et \f(CW\*(C`END\*(C'\fR peuvent e\*^tre utilise\*'s pour prendre le contro\*^le des ope\*'rations, avant ou apre\*`s la boucle implicite du programme, comme dans \fBawk\fR. .IP "\fB\-p\fR" 5 .IX Item "-p" indique a\*` Perl de conside\*'rer votre programme comme entoure\*' par la boucle suivante, qui le fait ite\*'rer sur les noms de fichiers passe\*'s en arguments, un peu a\*` la manie\*`re de \fBsed\fR: .Sp .Vb 6 \& LINE: \& while (<>) { \& ... # votre programme va la\*` \& } continue { \& print or die "\-p destination : $!\en"; \& } .Ve .Sp Si un fichier passe\*' en argument ne peut pas e\*^tre ouvert, pour quelque raison que ce soit, Perl vous pre\*'vient, et passe au fichier suivant. Notez que les lignes sont affiche\*'es automatiquement. Une erreur durant l'affichage est conside\*'re\*'e comme fatale. Pour supprimmer les affichages, utilisez l'option \fB\-n\fR. L'option \fB\-p\fR prend le dessus sur \fB\-n\fR. .Sp Les blocs \f(CW\*(C`BEGIN\*(C'\fR et \f(CW\*(C`END\*(C'\fR peuvent e\*^tre utilise\*'s pour prendre le contro\*^le des ope\*'rations, avant ou apre\*`s la boucle implicite, comme dans \fBawk\fR. .IP "\fB\-P\fR" 5 .IX Item "-P" indique a\*` Perl de faire passer votre programme dans le pre\*'\-processeur C avant la compilation. E\*'tant donne\*' que les commentaires Perl et les directives de \fBcpp\fR commencent avec le caracte\*`re #, il vaut mieux e\*'viter de mettre des commentaires qui de\*'butent par un mot re\*'serve\*' pour le pre\*'\-processeur comme \*(L"if\*(R", \*(L"else\*(R", ou \*(L"define\*(R". .IP "\fB\-s\fR" 5 .IX Item "-s" active une analyse rudimentaire des arguments sur la ligne de commande situe\*'s apre\*`s le nom du programme mais avant tout nom de fichier passe\*' en argument (ou avant un \fB\-\-\fR). Toute option trouve\*'e la\*` est retire\*'e de \f(CW@ARGV\fR et fixe la variable correspondante dans le programme Perl. Le programme suivant affiche \*(L"true\*(R" (\*(L"vrai\*(R", \s-1NDT\s0) si et seulement si le programme est invoque\*' avec une option \fB\-xyz\fR, et \*(L"abc\*(R" s'il est invoque\*' avec \fB\-xyz=abc\fR. .Sp .Vb 2 \& #!/usr/bin/perl \-s \& if ($xyz) { print "$xyz\en"; } .Ve .IP "\fB\-S\fR" 5 .IX Item "-S" fait en sorte que Perl utilise la variable d'environnement \s-1PATH\s0 pour rechercher le programme (a\*` moins que le nom du script ne contienne des se\*'parateurs de re\*'pertoires). Sur certaines plateformes, elle fait aussi ajouter par Perl des suffixes au nom de fichier tout pendant la recherche. Par exemple, sur les plateformes Win32, les suffixes \*(L".bat\*(R" et \*(L".cmd\*(R" sont ajoute\*'s si la recherche du nom originel e\*'choue, et si le nom ne se termine pas de\*'ja\*` par l'un de ces suffixes. Si votre Perl a e\*'te\*' compile\*' avec \s-1DEBUGGING\s0 active\*', donner l'option \-Dp a\*` Perl montre la progression de la recherche. .Sp Ceci est typiquement utilise\*' pour e\*'muler le de\*'marrage #! sur les plateformes qui ne le supportent pas. Cet exemple fonctionne sur de nombreuses plateformes ayant un shell compatible avec le Bourne shell: .Sp .Vb 3 \& #!/usr/bin/perl \& eval 'exec /usr/bin/perl \-wS $0 ${1+"$@"}' \& if $running_under_some_shell; .Ve .Sp Le syste\*`me ignore la premie\*`re ligne et donne le programme a\*` /bin/sh, qui essaye alors d'exe\*'cuter le programme Perl comme un script shell. Le shell exe\*'cute la deuxie\*`me ligne comme une commande de shell normale, et ainsi de\*'marre l'interpre\*'teur Perl. Sur certains syste\*`mes, \&\f(CW$0\fR ne contient pas toujours le chemin complet, l'option \fB\-S\fR dit donc a\*` Perl de rechercher le programme si ne\*'cessaire. Apre\*`s que Perl ait localise\*' le programme, il analyse les lignes et les ignore car la variable \f(CW$running_under_some_shell\fR n'est jamais vraie. Si le programme doit e\*^tre interpre\*'te\*' par csh, vous devrez remplacer \f(CW\*(C`${1+"$@"}\*(C'\fR par \&\f(CW$*\fR, me\*^me si cela ne comprend pas les espaces (et les autres caracte\*`res e\*'quivalents) inclus dans la liste d'arguments. Pour de\*'marrer sh pluto\*^t que csh, certains syste\*`mes peuvent ne\*'cessiter le remplacement de la ligne #! par une contenant juste un deux points, qui sera poliment ignore\*' par Perl. D'autres syste\*`mes ne peuvent pas contro\*^ler cela, et ont besoin d'une construction totalement diabolique qui fonctionnera sous \fBcsh\fR, \fBsh\fR, ou Perl, comme celle-ci : .Sp .Vb 3 \& eval '(exit $?0)' && eval 'exec perl \-wS $0 ${1+"$@"}' \& & eval 'exec /usr/bin/perl \-wS $0 $argv:q' \& if $running_under_some_shell; .Ve .Sp Si le nom de fichier fourni contient des se\*'parateurs de re\*'pertoires (i.e. si c'est un chemin absolu ou relatif), et si le fichier n'est pas trouve\*', les plateformes qui ajoutent des extensions de noms de fichiers le feront et essayeront de trouver le fichier avec ces extensions ajoute\*'es, les unes apre\*`s les autres. .Sp Sur les plateformes compatibles \s-1DOS\s0, si le programme ne contient pas de se\*'parateurs de re\*'pertoires, il sera d'abord recherche\*' dans le re\*'pertoire courant avant d'e\*^tre recherche\*' dans le \s-1PATH\s0. Sur les plateformes Unix, le programme sera recherche\*' strictement dans le \&\s-1PATH\s0. .IP "\fB\-T\fR" 5 .IX Item "-T" force l'activation des ve\*'rifications de \*(L"souillure\*(R" pour que vous puissiez les tester. Ordinairement, ces ve\*'rifications sont faites seulement lorsque l'on exe\*'cute en setuid ou setgid. C'est une bonne ide\*'e que de les activer explicitement pour les programmes exe\*'cute\*'s au nom de quelqu'un d'autre, comme par exemple les programmes \s-1CGI\s0 ou tout serveur internet que vous puissiez e\*'crire en Perl. Voir perlsec pour plus de de\*'tails. Pour des raisons de se\*'curite\*', cette option doit e\*^tre vue par Perl tre\*`s to\*^t ; cela signifie habituellement qu'elle doit apparai\*^tre to\*^t dans la ligne de commande ou sur la ligne #! pour les syste\*`mes qui le supportent. .IP "\fB\-u\fR" 5 .IX Item "-u" Cette option obsole\*`te force Perl a\*` e\*'crire un coredump apre\*`s la compilation de votre programme. Vous pouvez ensuite the\*'oriquement prendre ce coredump et en faire un fichier exe\*'cutable en utilisant le programme \fBundump\fR (non fourni). Ceci acce\*'le\*`re le de\*'marrage au de\*'triment de l'espace disque (que vous pouvez minimiser en strippant l'exe\*'cutable. Mais un exe\*'cutable \*(L"hello world\*(R" fait encore environ 200K sur ma machine). Si vous voulez exe\*'cuter une portion de votre programme avant le dump, utilisez l'ope\*'rateur \fIdump()\fR a\*` la place. Note: la disponibilite\*' de \fBundump\fR est spe\*'cifique a\*` la plateforme et peut ne pas e\*^tre disponible pour un portage spe\*'cifique de Perl. .Sp Cette option a e\*'te\*' remplace\*'e par le nouveau backend du compilateur ge\*'ne\*'rateur de code Perl. Voir B et B::Bytecode pour plus de de\*'tails. .IP "\fB\-U\fR" 5 .IX Item "-U" permet a\*` Perl de re\*'aliser des ope\*'rations non su\*^res. Couramment, les seules ope\*'rations \*(L"non su\*^res\*(R" sont l'effacement des re\*'pertoires par unlink lors d'une exe\*'cution en tant que superutilisateur, et l'exe\*'cution de programmes setuid avec les ve\*'rifications de souillures fatales transforme\*'es en avertissements. Notez que l'option \fB\-w\fR (ou la variable \f(CW$^W\fR) doit e\*^tre utilise\*'e en me\*^me temps que cette option pour effectivement \fIge\*'ne\*'rer\fR les avertissements de ve\*'rification de souillure. .IP "\fB\-v\fR" 5 .IX Item "-v" affiche les nume\*'ros de version de votre exe\*'cutable perl. .IP "\fB\-V\fR" 5 .IX Item "-V" affiche un re\*'sume\*' des principales valeurs de configuration de perl et les valeurs actuelles de \f(CW@INC\fR. .IP "\fB\-V:\fR\fIname\fR" 5 .IX Item "-V:name" sort sur \s-1STDOUT\s0 la valeur de la variable de configuration nomme\*'e. Par exemple : .Sp .Vb 1 \& $ perl \-V:man.dir .Ve .Sp fournira des indices probants sur la valeur que devrait contenir votre variable \s-1MANPATH\s0 pour acce\*'der a\*` la documentation de Perl. .IP "\fB\-w\fR" 5 .IX Item "-w" affiche des avertissements concernant les constructions douteuses, telles que les noms des variables n'e\*'tant mentionne\*'s qu'une seule fois et les variables scalaires utilise\*'es avant d'e\*^tre de\*'finies, les sous-programmes rede\*'finis, les re\*'fe\*'rences aux handles de fichiers inde\*'finis ou aux handles de fichiers ouverts en lecture seule et sur lesquels vous essayez d'e\*'crire, les valeurs utilise\*'es comme des nombres et qui n'ont pas l'air d'e\*^tre des nombres, les tableaux utilise\*'s comme s'ils e\*'taient des scalaires, les sous-programmes re\*'cursifs se rappellent eux\-me\*^mes plus de 100 fois, et d'innombrables autres choses. .Sp Cette option ne fait que valider la variable interne \f(CW\*(C`^$W\*(C'\fR. Vous pouvez invalider certains avertissements ou les promouvoir en erreurs fatales de fac\*,on spe\*'cifique en utilisant des hooks \f(CW\*(C`_\|_WARN_\|_\*(C'\fR, comme il est de\*'crit dans perlvar et dans \*(L"warn\*(R" in perlfunc. Voir aussi perldiag et perltrap. Une nouvelle fac\*,on de ge\*'rer finement les avertissements est aussi disponible si vous voulez en manipuler des classes entie\*`res ; voir warnings ou perllexwarn. .IP "\fB\-W\fR" 5 .IX Item "-W" valide tous les avertissements sans tenir compte de \f(CW\*(C`no warnings\*(C'\fR ou de \f(CW$^W\fR. Voir perllexwarn. .IP "\fB\-X\fR" 5 .IX Item "-X" invalide tous les avertissements sans tenir compte de \f(CW\*(C`use warnings\*(C'\fR ou de \f(CW$^W\fR. Voir perllexwarn. .IP "\fB\-x\fR \fIre\*'pertoire\fR" 5 .IX Item "-x re'pertoire" dit a\*` Perl que le programme est enfouie dans une masse de texte \s-1ACSII\s0 n'ayant rien a\*` voir, comme par exemple un courrier e\*'lectronique. Les de\*'chets qui le pre\*'ce\*`dent seront ignore\*'s jusqu'a\*` la premie\*`re ligne commenc\*,ant par #! et contenant la chai\*^ne \*(L"perl\*(R". Toute option significative sur cette ligne sera applique\*'e. Si un nom de re\*'pertoire est spe\*'cifie\*', Perl passera dans ce re\*'pertoire avant d'exe\*'cuter le programme. L'option \fB\-x\fR contro\*^le seulement la destruction des de\*'chets qui pre\*'ce\*`dent le script. Le programme doit se terminer par \&\f(CW\*(C`_\|_END_\|_\*(C'\fR si des de\*'chets doivent e\*^tre ignore\*'s apre\*`s lui (si on le de\*'sire, le programme peut traiter tout ou partie de ce qui le suit via le handle de fichier \s-1DATA\s0). .SH "ENVIRONNEMENT" .IX Header "ENVIRONNEMENT" .IP "\s-1HOME\s0" 12 .IX Item "HOME" Utilise\*'e si chdir n'a pas d'argument. .IP "\s-1LOGDIR\s0" 12 .IX Item "LOGDIR" Utilise\*'e si chdir n'a pas d'argument et si \s-1HOME\s0 n'est pas fixe\*'e. .IP "\s-1PATH\s0" 12 .IX Item "PATH" Utilise\*'e lors de l'exe\*'cution de sous\-processus, et dans la recherche du programme si \fB\-S\fR est utilise\*'e. .IP "\s-1PERL5LIB\s0" 12 .IX Item "PERL5LIB" Une liste de re\*'pertoires ponctue\*'e de deux points dans lesquels on doit rechercher les fichiers de bibliothe\*`ques de Perl avant de les rechercher dans la bibliothe\*`que standard et le re\*'pertoire courant. Tous les re\*'pertoires spe\*'cifiques a\*` l'architecture aux endroits spe\*'cifie\*'s sont automatiquement inclus s'ils existent. Si \&\s-1PERL5LIB\s0 n'est pas de\*'finie, \s-1PERLLIB\s0 est utilise\*'e. .Sp Lors d'une exe\*'cution avec ve\*'rifications de souillure (soit parce que le programme est exe\*'cute\*' en setuid ou setgid, soit parce que l'option \&\fB\-T\fR est active\*'e), aucune des deux variables n'est utilise\*'e. Le script devrait dire a\*` la place : .Sp .Vb 1 \& use lib "/my/directory"; .Ve .IP "\s-1PERL5OPT\s0" 12 .IX Item "PERL5OPT" Options de ligne de commande (switches). Les options dans cette variable sont conside\*'re\*'es comme faisant partie de toute ligne de commande Perl. Seules les options \fB\-[DIMUdmw]\fR sont autorise\*'e. Lors d'une exe\*'cution avec ve\*'rifications de souillure (puisque le programme est exe\*'cute\*' en setuid ou setgid, ou si l'option \fB\-T\fR est active\*'e), cette variable est ignore\*'e. Si \s-1PERL5OPT\s0 commence par \fB\-T\fR, la ve\*'rification sera active\*'e, et toute les options suivantes seront ignore\*'es. .IP "\s-1PERLLIB\s0" 12 .IX Item "PERLLIB" Une liste de re\*'pertoires ponctue\*'e de deux points dans lesquels on doit rechercher les fichiers de bibliothe\*`que de Perl avant de les rechercher dans la bibliothe\*`que standard et le re\*'pertoire courant. Si \&\s-1PERL5LIB\s0 est de\*'finie, \s-1PERLLIB\s0 n'est pas utilise\*'e. .IP "\s-1PERL5DB\s0" 12 .IX Item "PERL5DB" La commande utilise\*'e pour charger le code du debuggueur. La valeur par de\*'faut est : .Sp .Vb 1 \& BEGIN { require 'perl5db.pl' } .Ve .IP "\s-1PERL5SHELL\s0 (spe\*'cifique a\*` la version \s-1WIN32\s0)" 12 .IX Item "PERL5SHELL (spe'cifique a` la version WIN32)" Peut e\*^tre fixe\*'e vers un shell alternatif que perl doit utiliser en interne pour exe\*'cuter les commandes entre accents graves ou la commande \fIsystem()\fR. La valeur par de\*'faut est \f(CW\*(C`cmd.exe /x/c\*(C'\fR sous WindowsNT et \f(CW\*(C`command.com /c\*(C'\fR sous Windows95. La valeur est conside\*'re\*'e comme de\*'limite\*'e par des espaces. Pre\*'ce\*'dez tout caracte\*`re devant e\*^tre prote\*'ge\*' (comme une espace ou une barre oblique inverse) par une barre oblique inverse. .Sp Notez que Perl n'utilise pas \s-1COMSPEC\s0 pour cela car \s-1COMSPEC\s0 a un haut degre\*' de variabilite\*' entre les utilisateurs, ce qui ame\*`ne a\*` des soucis de portabilite\*'. De plus, perl peut utiliser un shell qui ne convienne pas a\*` un usage interactif, et le fait de fixer \s-1COMSPEC\s0 vers un tel shell peut interfe\*'rer avec le fonctionnement correct d'autres programmes (qui regardent habituellement \s-1COMSPEC\s0 pour trouver un shell permettant l'utilisation interactive). .IP "\s-1PERL_DEBUG_MSTATS\s0" 12 .IX Item "PERL_DEBUG_MSTATS" Valable seulement si perl est compile\*' avec la fonction malloc inclue dans la distribution de perl (c'est\-a\*`\-dire si \f(CW\*(C`perl \-V:d_mymalloc\*(C'\fR vaut 'define'). Si elle a une valeur, cela provoque un dump de statistiques d'utilisation de la me\*'moire apre\*`s l'exe\*'cution. Si sa valeur est un entier supe\*'rieur a\*` un, les statistiques d'utilisation de la me\*'moire sont aussi dumpe\*'es apre\*`s la compilation. .IP "\s-1PERL_DESTRUCT_LEVEL\s0" 12 .IX Item "PERL_DESTRUCT_LEVEL" Valable seulement si votre exe\*'cutable perl a e\*'te\*' construit avec \&\fB\-DDEBUGGING\fR, ceci contro\*^le le comportement de la destruction globale des objets et autres re\*'fe\*'rences. .PP Perl dispose aussi de variables d'environnement qui contro\*^lent comment Perl manipules les donne\*'es spe\*'cifiques a\*` un langage naturel particulier. Voir perllocale. .PP A\*` part celles\-ci, Perl n'utilise pas d'autres variables d'environnement, sauf pour les rendre disponibles au programme e\*'tant exe\*'cute\*', et aux processus fils. Toutefois, les programmes exe\*'cute\*'s en setuid feraient bien d'exe\*'cuter les lignes suivantes avant de faire quoi que ce soit d'autres, ne serait-ce que pour que les gens restent honne\*^tes : .PP .Vb 3 \& $ENV{PATH} = '/bin:/usr/bin'; # or whatever you need \& $ENV{SHELL} = '/bin/sh' if exists $ENV{SHELL}; \& delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}; .Ve .SH "TRADUCTION" .IX Header "TRADUCTION" .Sh "Version" .IX Subsection "Version" Cette traduction franc\*,aise correspond a\*` la version anglaise distribue\*'e avec perl 5.6.0. Pour en savoir plus concernant ces traductions, consultez . .Sh "Traducteur" .IX Subsection "Traducteur" Loic Tortay <\fIloict@bougon.net\fR> Roland Trique <\fIroland.trique@uhb.fr\fR> .Sh "Relecture" .IX Subsection "Relecture" Personne pour l'instant.