Démarrer
  • Eggdrop ?
  • Installation
  • Config. Auto
  • Commandes
  • Shells
  • Crontab
  • CVS
  • Scripting TCL
  • Initiation
  • Exercices
  • Scripts
  • Docs
  • Eggdrop 1.7
  • Introduction
  • Scripting Perl
  • Botnet
  • Introduction
  • Inscription
  • Divers
  • Autres
  • Download
  • Liens
  • Aide
  • FAQ
  • Canal IRC
  • Mailing List
  • Forum
  • Contact
  • Participez !

  •       

    [ Scripter eggdrop 1.7 en perl ]

    Pourquoi utiliser perl

    Perl est un langage très utilisé dans le monde, possède un large éventail de fonctionnalités et de styles de programmation supportés (bourrin, standard, orienté objet).

    Ce qui est le plus important c'est la large bibliothèque de modules d'extension, le CPAN (http://search.cpan.org/); grâce à cet outil vous pouvez à peu près faire n'importe quoi sans vraiment savoir trop programmer (quelques notions de perl et le talent de savoir lire une doc suffisent).

    Installer perl

    Sous unix, en général, perl est déjà installé.

    Sous windows, il faut installer activeperl (http://www.activeperl.com).

    Mon premier script perl Programmer du perl pour eggdrop n'est pas si différent de TCL. Supposons que vous ayez lu l'introduction à TCL de ce même site, vous connaissez le script pays3.tcl... Analysons en les différents composants.

    • Commentaires
      Comme en TCL, tout ce qui commence par # est un commentaire, et ce n'est pas multi-lignes.

    • Configuration
      set display_info_pays 0
      => PERL : $display_info_pays = 0;

    • Binds
      bind pub - !pays pub:pays
      => PERL : &bind("pub","-","!pays","pub:pays");
      NB: Ici il est nécessaire de mettre le & pour signifier que c'est une fonction locale à eggdrop ; en effet il existe une fonction bind() en perl qui sert à créer des sockets en écoute.

    • Hashes (tableaux associatifs) $pays{"be"} = "Belgique";
      $pays{"ca"} = "Canada";

    • Procédures (subs/sous-routines/fonctions) proc pub:pays { nick uhost handle channel arg } { blablabla }
      => PERL : sub pub:pays { blablabla }
      NB: Les arguments passés à toute fonction sont contenus, à l'intérieur de la fonction dans la liste @_. Ainsi si vous souhaitez récupérer les arguments passés dans des variables scalaires, vous devez ajouter cette ligne après le début de la fonction: my ($nick, $uhost, $handle, $channel, $args) = @_;
      ("my" signifie que les variables dans les () sont locales au bloc; pour les globales, c'est "our").

    Pièges à éviter

    Vous risquez d'être confrontés à des problèmes avec les tableaux. En perl il faut bien distinguer les tableaux normaux (arrays) des tableaux associatifs (hashes).

    Les tableaux normaux, ou arrays, sont en réalité des listes. Supposons que vous en ayez un qui s'appelle "karaoke". Pour s'y référer globalement vous devez utiliser le signe @ : @karaoke = ("juvet","cabrel","ymca");
    En revanche si vous voulez accéder à un élément en particulier, utilisez $karaoke[0] , variable qui vaut "juvet".

    Les tableaux associatifs, ou hashes, sont des tableaux à en-têtes tels qu'on les conçoit. Leur préfixe est % et ce n'est plus [] mais {} pour accéder aux valeurs.

    Les tableaux de perl ont une restriction de taille: on ne peut y stocker que des scalaires. Impossible de ce fait de faire de vrais tableaux emboîtés, or il arrive que certaines fonctions d'eggdrop soient sensées retourner des listes emboîtées. A chaque fois que la doc précise qu'une liste est retournée, perl retourne en réalité une référence sur array. Ces références sont en quelque sorte les adresses de la variable tableau, et c'est l'antislash qui fait ici notre bonheur.
    Soit @voiture une liste.
    $immatriculation = \@voiture; $immatriculation est une référence sur la liste @voiture.
    Vous pouvez recréer une liste à partir d'une référence, simplement en faisant: @mycar = @$immatriculation;

    Documentation

    Je ne saurais trop vous conseiller la lecture de la doc perl:

    Vous pourrez aussi trouver un script de recherche sur google comme exemple ici.


    Auteur original : Guillaume Leclanche (Mo-Ize)

    Copyright (c) 2002 Guillaume Leclanche (Mo-Ize)
    Ce document issu de Eggdrop-fr.org est soumis à la licence GNU FDL.
    Permission vous est donnée de copier, distribuer, et/ou modifier des copies de ce document sous les termes de
    la licence GNU Free Documentation Licence, version 1.1 ou ultérieure publiée par la Free Software Foundation.