NOM

perlfaq - Foire aux questions sur Perl (Date: 1999/05/23 20:38:02)

DESCRIPTION

Ce document est découpé de la manière suivante :

perlfaq: Description de la structure de la FAQ.

Ce document.

perlfaq1: Questions Générales sur Perl.

Informations très générales sur Perl.

  • Qu'est ce que Perl ?

  • Qui supporte Perl ? Qui le développe ? Pourquoi est-il gratuit ?

  • Quelle version de Perl dois je utiliser ?

  • Qu'est-ce que perl4 et perl5 ?

  • Qu'est-ce que perl6 ?

  • Est-ce que Perl est stable ?

  • Est-il difficile d'apprendre Perl ?

  • Est-ce que Perl tient la comparaison avec d'autres langages comme Java, Python, REXX, Scheme ou Tcl ?

  • Que puis-je faire avec Perl ?

  • Quand ne devrais-je pas programmer en Perl ?

  • Quelle est la différence entre "perl" et "Perl" ?

  • Parle-t-on de programme Perl ou de script Perl ?

  • Qu'est ce qu'un JAPH ?

  • Où peut on trouver la liste des mots d'esprit de Larry Wall ?

  • Comment convaincre mon administrateur système/chef de projet/employés d'utiliser Perl5 plutot qu'un autre langage ?

perlfaq2: Obtenir et Apprendre Perl.

Où trouver les sources et la documentation de Perl.

  • Quelles machines supportent Perl ? Où puis-je trouver Perl ?

  • Comment trouver une version binaire de Perl ?

  • Je n'ai pas de compilateur C sur mon système. Comment puis-je compiler perl ?

  • J'ai copié le binaire Perl d'une machine sur une autre mais les scripts ne fonctionnent pas.

  • J'ai récupéré les sources et j'essaie de les compiler mais gdbm/dynamic loading/malloc/linking/... échoue. Comment faire pour que ça marche ?

  • Quels sont les modules et extensions qui existent pour Perl ? Qu'est-ce que CPAN ? Que signifie CPAN/src/... ?

  • Existe-t-il une version de Perl certifiée ISO ou ANSI ?

  • Où puis-je trouver des informations sur Perl ?

  • Quels sont les groupes de discussion concernant Perl sur Usenet ? Où puis-je poser mes questions ?

  • Où puis-je poster mon code source ?

  • Les livres sur Perl

  • Les magazines sur Perl

  • Perl sur Internet : accès via FTP et WWW

  • Quelles sont les listes de diffusion concernant Perl ?

  • Archives de comp.lang.perl.misc

  • Où puis-je acheter une version commerciale de Perl ?

  • Où dois-je poster mes rapports de bugs ?

  • Qu'est-ce que perl.com ? Les Perl Mongers ? pm.org ? perl.org ?

perlfaq3: Outils de Programmation.

Outils pour le programmeur et support technique.

  • Comment fais-je pour... ?

  • Comment utiliser Perl de façon interactive ?

  • Y a-t-il un shell Perl ?

  • Comment debugger mes programmes Perl ?

  • Comment connaître la vitesse d'exécution de mes programmes Perl ?

  • Comment faire une référence croisée de mon programme Perl ?

  • Y a-t-il un outil de mise en page de code Perl ?

  • Y a-t-il un ctags pour Perl ?

  • Existe-t-il un environnement de développement intégré ou un Éditeur Perl sous Windows ?

  • Où puis-je trouver des macros pour Perl sous vi ?

  • Où puis-je trouver le mode perl pour emacs ?

  • comment utiliser des 'curses' avec Perl ?

  • Comment puis-je utiliser X ou Tk avec Perl ?

  • Comment générer de simples menus sans utiliser CGI ou Tk ?

  • Qu'est ce que undump ?

  • Comment faire en sorte que mes programmes Perl soient plus rapides ?

  • Comment faire pour que mes programmes Perl prennent moins de mémoire ?

  • Est-ce sûr de retourner un pointeur sur une données locale ?

  • Comment puis-je libérer un tableau ou table de hachage pour réduire mon programme ?

  • Comment rendre mes scripts CGI plus efficaces ?

  • Comment dissimuler le code source de mon programme Perl ?

  • Comment compiler mon programme Perl en code binaire ou C ?

  • Comment compiler Perl pour en faire du Java ?

  • Comment faire fonctionner #!perl sur [MS-DOS,NT,...] ?

  • Puis-je écrire des programmes Perl pratiques sur la ligne de commandes ?

  • Pourquoi les commandes Perl à une ligne ne fonctionnent-elles pas sur mon DOS/Mac/VMS ?

  • Où puis-je en apprendre sur la programmation CGI et Web en Perl ?

  • Où puis-je en apprendre sur la programmation orientée objet en Perl ?

  • Où puis-je en apprendre sur l'utilisation liée du Perl et du C ? [h2xs, xsubpp]

  • J'ai lu perlembed, perlguts, etc., mais je ne peux inclure du perl dans mon programme C, qu'est ce qui ne va pas ?

  • Quand j'ai tenté d'exécuter mes scripts, j'ai eu ce message. Qu'est ce que cela signifie ?

  • Qu'est-ce que MakeMaker ?

perlfaq4: Manipulation de Données.

Comment manipuler les nombres, les dates, les chaines de caractères, les tableaux, les tableaux H-codés et autres renseignements sur les types.

  • Pourquoi est-ce que j'obtiens des nombres décimaux longs (e.g.. 19.9499999999999) à la place du nombre que j'attends (e.g. 19.95) ?

  • Pourquoi mon nombre octal n'est-il pas interprété correctement ?

  • Est-ce que perl a une fonction round() ? Et qu'en est-il de ceil() (majoration) et floor() (minoration) ? Et des fonctions trigonométriques ?

  • Comment est-ce que je convertis des bits en entiers ?

  • Pourquoi & ne fonctionne-t-il pas comme je le veux ?

  • Comment puis-je multiplier des matrices ?

  • Comment puis-je effectuer une opération sur une série d'entiers ?

  • Comment puis-je produire des chiffres romains ?

  • Pourquoi mes nombres aléatoires ne sont-ils pas aléatoires ?

  • Où trouver la semaine/le jour de l'année ?

  • Comment trouver le siècle ou le millénaire actuel ?

  • Comment puis-je comparer deux dates ou en calculer une différence ?

  • Comment puis-je convertir une chaîne de caractères en secondes depuis l'origine ?

  • Comment trouver le jour du calendrier Julien ?

  • Comment trouver la date d'hier ?

  • Est-ce que Perl a un problème avec l'an 2000 ? Est-ce Perl est compatible an 2000 ?

  • Comment m'assurer de la validité d'une entrée ?

  • Comment enlever les caractères d'échappement d'une chaîne de caractères ?

  • Comment enlever des paires de caractères successifs ?

  • Comment effectuer des appels de fonction dans une chaîne ?

  • Comment repérer des éléments appariés/imbriqués ?

  • Comment inverser une chaîne de caractères ?

  • Comment développer les tabulations dans une chaîne de caractères ?

  • Comment remettre en forme un paragraphe ?

  • Comment accéder ou/modifier les N premières lettres d'une chaîne de caractères ?

  • Comment changer la n-ième occurrence de quelque chose ?

  • Comment compter le nombre d'occurrences d'une sous-chaîne dans une chaîne de caractères ?

  • Comment mettre en lettres majuscules tous les mots d'une ligne ?

  • Comment découper une chaîne séparée par un [caractère] sauf à l'intérieur d'un [caractère] ? (Champs délimités par des virgules)

  • Comment supprimer des espaces blancs au début/à la fin d'une chaîne ?

  • Comment cadrer une chaîne avec des blancs ou un nombre avec des zéros ?

  • Comment extraire une sélection de colonnes d'une chaîne de caractères ?

  • Comment calculer la valeur soundex d'une chaîne ?

  • Comment interpoler des variables dans des chaînes de texte ?

  • En quoi est-ce un problème de toujours mettre "$vars" entre guillemets ?

  • Pourquoi est-ce que mes documents <<INSERE ne marchent pas ?

  • Quelle est la différence entre une liste et un tableau ?

  • Quelle est la différence entre $array[1] et @array[1] ?

  • Comment puis-je supprimer les doublons d'une liste ou d'un tableau ?

  • Comment puis-je déterminer si une liste ou un tableau contient un certain élément ?

  • Comment puis-je calculer la différence entre deux tableaux ? Comment puis-je calculer l'intersection entre deux tableaux ?

  • Comment tester si deux tableaux ou hachages sont égaux ?

  • Comment puis-je trouver le premier élément d'un tableau pour lequel une proposition est vraie ?

  • Comment puis-je gérer des listes chaînées ?

  • Comment puis-je gérer des listes circulaires ?

  • Comment puis-je mélanger un tableau au hasard ?

  • Comment puis-je traiter/modifier chaque élément d'un tableau ?

  • Comment puis-je sélectionner un élément aléatoire d'un tableau ?

  • Comment permuter N éléments d'une liste ?

  • Comment trier un tableau par (n'importe quoi) ?

  • Comment puis-je manipuler des tableaux de bits ?

  • Pourquoi est-ce que defined() retourne vrai sur des tableaux et hachages vides ?

  • Comment puis-je traiter un tableau entier ?

  • Que se passe-t-il si j'ajoute ou j'enlève des clefs d'un hachage pendant que j'itère dessus ?

  • Comment puis-je rechercher un élément d'un hachage par sa valeur ?

  • Comment puis-je savoir combien d'entrées sont dans un hachage ?

  • Comment puis-je trier un hachage (en option: par valeur plutôt que par clef) ?

  • Comment puis-je conserver mes hachages toujours ordonnés ?

  • Quel est la différence entre "delete" et "undef" pour des hachages ?

  • Pourquoi est-ce que mes hachages attachés ne font pas la distinction entre exists et defined ?

  • Comment remettre à zéro une opération each() à mi-chemin ?

  • Comment puis-je obtenir l'unicité des clefs de deux hachages ?

  • Comment puis-je enregistrer un tableau multidimensionnel dans un fichier DBM ?

  • Comment puis-je faire en sorte que mon hachage conserve l'ordre des éléments que j'y mets ?

  • Pourquoi est-ce que de passer à une sous-routine un élément non défini d'un hachage le crée du même coup ?

  • Comment puis-je faire l'équivalent en Perl d'une structure en C, d'une classe/d'un hachage en C++ ou d'un tableau de hachages ou de tableaux ?

  • Comment puis-je utiliser une référence comme clef d'un hachage ?

  • Comment puis-je manipuler proprement des données binaires ?

  • Comment puis-je déterminer si un scalaire est un nombre/entier/à virgule flottante ?

  • Comment puis-je conserver des données persistantes entre divers appels de programme ?

  • Comment puis-je imprimer ou copier une structure de données récursive ?

  • Comment puis-je définir des méthodes pour toutes les classes ou tous les objets ?

  • Comment est-ce que je vérifie la somme de contrôle d'une carte de crédit ?

  • Comment compacter des tableaux de nombres à virgule flottante simples ou doubles pour le code XS ?

perlfaq5: Fichiers et Formats.

Entrées/Sorties et tout ce qui se rapporte aux fichiers : descripteur de fichier, vidage du buffer, formats et mise en page.

  • Comment vider/annuler les tampons en sortie ? Pourquoi m'en soucier ?

  • Comment changer une ligne/effacer une ligne/insérer une ligne au milieu/ajouter une ligne en tête d'un fichier ?

  • Comment déterminer le nombre de lignes d'un fichier ?

  • Comment créer un fichier temporaire ?

  • Comment manipuler un fichier avec des enregistrements de longueur fixe ?

  • Comment rendre un descripteur de fichier local à une routine ? Comment passer ce descripteur à d'autres routines ? Comment construire un tableau de descripteurs ?

  • Comment utiliser un descripteur de fichier indirectement ?

  • Comment mettre en place un pied-de-page avec write() ?

  • Comment rediriger un write() dans une chaîne ?

  • Comment afficher mes nombres avec des virgules pour délimiter les milliers ?

  • Comment traduire les tildes (~) dans un nom de fichier ?

  • Pourquoi les fichiers que j'ouvre en lecture-écriture ont-ils leur contenu effacé en premier lieu ?

  • Pourquoi ai-je l'erreur "Argument list too long" avec <*> de temps en temps ?

  • Y a-t-il une fuite / un bug avec glob() ?

  • Commend ouvrir un fichier dont le nom commence par ">" ou avec des espaces en fin ?

  • Comment renommer un fichier de façon sûre ?

  • Comment verrouiller un fichier ?

  • Pourquoi ne pas faire simplement open(FH, ">file.lock") ?

  • Je ne comprends toujous pas le verrouillage. Je veux seulement incrémenter un compteur dans un ficher. Comment faire ?

  • Comment modifier un fichier binaire directement ?

  • Comment recupérer l'estampille temporelle d'un fichier en perl ?

  • Comment imprimer une estampille temporelle sur un fichier en perl ?

  • Comment écrire dans plus d'un fichier en même temps ?

  • Comment lire tout un fichier d'un seul coup ?

  • Comment lire un fichier paragraphe par paragraphe ?

  • Comment lire un seul caractère d'un fichier ? Et du clavier ?

  • Comment savoir si un caractère est disponible sur un descripteur ?

  • Comment écrire un tail -f en perl ?

  • Comment faire un dup() sur un descripteur en Perl ?

  • Comment fermer un descripteur connu par son numéro ?

  • Pourquoi "C:\temp\foo" n'indique pas un fichier DOS ? Et même "C:\temp\foo.exe" ne marche pas ?

  • Pourquoi glob("*.*") ne donne-t-il pas tous les fichiers ?

  • Pourquoi Perl me laisse effacer des fichiers protégés en écriture ? Pourquoi -i écrit dans des fichiers protégés ? N'est-ce pas un bug de Perl ?

  • Comment sélectionner une ligne au hasard dans un fichier ?

  • Pourquoi obtient-on des espaces étranges lorsqu'on affiche un tableau de lignes ?

perlfaq6: Expressions Régulières.

Recherche de motif et expressions régulières.

perlfaq7: Questions générales sur le langage Perl.

Questions sur le langage Perl qui ne rentrent dans aucun des chapitres précédents.

perlfaq8: Interaction avec le système.

Communication inter-processus (IPC), interface homme-machine (clavier, écran, souris).

perlfaq9: Programmation réseau.

Programmation réseau, l'Internet et quelques lignes sur le web.

Où se procurer ce document.

La version originale de ce document est régulièrement postée dans comp.lang.perl.announce et dans plusieurs autres groupe de discussions. Il est disponible sous plusieurs formats au CPAN dans le répertoire /CPAN/doc/FAQs/FAQ/, et sur le web à l'adresse http://www.perl.com/perl/faq/ .

La version française est disponible sur le site officiel des traducteurs http://perl.enstimac.fr/ .

Comment contribuer à ce document.

Les ajouts et les suggestions pour la version originale doivent être adressés à perlfaq-suggestions@perl.com. Les corrections et les ajouts à la version française doivent être adressés à perlfrench@immortels.frmug.org . Si vous voulez participer à l'effort de traduction et de relecture vous pouvez vous inscrire à la mailing-liste perlfrench en envoyant un message à Majordomo@frmug.org contenant la ligne subscribe perlfrench

Ces adresses ne doivent pas être utilisés pour poser des questions. Elles sont destinées à la correction de la FAQ en cours.

Que va-t-il se passer si vous envoyez votre question aux auteurs.

Votre question sera probablement pas lue, à moins qu'elle représente une suggestion d'ajout à la FAQ, qui de toute manière aurait dû être adressée à perlfaq-suggestions@perl.com .

Vous feriez mieux de lire le chapitre 2 de cette faq. Vous auriez appris que fr.comp.lang.perl et comp.lang.perl sont les endroits les plus appropriés pour poser vos questions. Si votre question est vraiment très important et qu'il vous faut une réponse immédiate, vous feriez mieux d'engager un consultant.

Attention même si vous utilisez Perl pour écrire des scripts CGI, les questions portant sur la configuration des différents logiciels de serveurs web, sur l'utilisation des protocoles CGI et du HTML n'ont rien à faire sur fr.comp.lang.perl . Le groupe de discussion le plus approprié pour les problèmes CGI est fr.comp.infosystemes.www.auteurs.

Il est fortement conseillé de lire la charte du groupe avant de poster la première fois, elle contient de bons conseils pour une bonne entente sur ce groupe de discussion. La charte est postée régulièrement sur le groupe de discussion et est aussi disponible dans fr.usenet.reponses et sur http://usenet-fr.news.eu.org/liste-groupes.html

Credits de Tom Christiansen

Lorsque j'ai commencé l'écriture de la FAQ Perl à la fin des années 80, je n'immaginais pas qu'elle dépasserait la centaine de pages, ni que Perl deviendrait si populaire. Ce document n'aurait pas pu être écrit sans l'aide précieuse de Larry Wall et du reste de l'équipe de développement de Perl.

Author and Copyright Information

Copyright (c) 1997, 1998 Tom Christiansen and Nathan Torkington. All rights reserved.

Distribution de la documentation

Lorsqu'elle est fournie comme composante de la distribution standard de Perl ou de sa documentation imprimée ou sous un autre format, ce travail doit être distribué selon les termes de la license Artistique de Perl. Toute autre distribution de ces fichiers ou de ses dérivés en dehors de ce paquetage impose qu'un tel arrangement soit fait avec le propriétaire du copyright.

Tous les exemples de cette FAQ sont placés dans le domaine public. Vous êtes autorisé et encouragé à utiliser ce code dans vos propres programmes pour le plaisir ou pour le profit comme vous le voulez. Un simple commentaire dans le source mentionnant la réutilisation serait poli mais n'est pas obligatoire.

Rappel

Les informations vous sont offertes de bonne grâce et dans l'espoir qu'elles pourront vous servir, mais elles ne sont pas garanties d'être correctes, à jours, ou utilisables pour quoique se soit. L'auteur n'accepte aucune responsabilité concernant ces informations ni sur leurs utilisations.

TRADUCTION

Version

Cette traduction française correspond à la version anglaise distribuée avec perl 5.6.0. Pour en savoir plus concernant ces traductions, consultez http://perl.enstimac.fr/.

Traducteur

Marc Carmier <carmier@immortels.frmug.org>

Relecture

Pascal Ethvignot <pascal@encelade.frmug.org>