perlwin32faq9 - Modules et scripts exemples


NOM

perlwin32faq9 - Modules et scripts exemples

Retour en haut de la page


DESCRIPTION

Comment utiliser les modules du CPAN ?

Depuis la version 5.005, Perl pour Win32 supporte l'utilitaire MakeMaker. Cela vous permet d'installer des modules depuis CPAN, mais requiert que vous ayez un utilitaire make, comme nmake ou dmake. Les modules sont généralement distribués en fichiers gzippés, comme Data-Dumper-2.08.tar.gz.

Toutefois, ActivePerl inclut le Gestionnaire de Paquetage Perl (PPM), un utilitaire qui vous permet d'installer des modules, y compris ceux contenant des extensions binaires. Vous devriez envisager d'utiliser PPM pour installer un module, car cela simplifie grandement la gestion des modules.

Quoi qu'il en soit, il y a des fois où il est nécessaire de construire un module depuis le source. Typiquement, une session d'installation se déroule comme ceci :

  1. Extraction du module. Cela crée le répertoire basé sur le nom de l'archive.
        gzip -d -c Data-Dumper-2.08.tar.gz | tar xvf -

  2. Aller dans le répertoire du module.
        cd Data-Dumper-2.08

  3. Consulter le fichier README.
        more < README

  4. Lancer le script Makefile.PL. Il utilise le module MakeMaker pour construire un makefile vous permettant de construire l'extension.
        perl Makefile.PL

  5. Lancer votre utilitaire make. Il prépare l'installation du module, et compile toutes les extensions s'il en existe.
        nmake

  6. Exécuter les tests du module s'il y en a,
        nmake test

  7. Installer le module si les tests réussissent.
        nmake install

Voir Où trouver des portages Win32 des outils UNIX ? pour des informations sur la disponibilité d'outils tels que gzip et tar.

Où obtenir make pour Win32?

nmake
nmake est un programme style 'make' pour les systèmes Win32 par Microsoft. Il est disponible sur ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe

Comment accéder à une base de données depuis un script Perl ?

DBI
DBI, un module d'Interface de Bases de Données pour Perl fournit une interface consistante pour le développement d'applications de bases de données. DBI supporte les pilotes ODBC aussi bien que les APIs natives de certaines bases de données, Oracle inclus. La page de DBI est à :
    http://dbi.perl.org/

ADO
Les Objets de Données ActiveX (ADO) API peuvent être utilisés avec le module Win32::OLE. Vous pouvez utiliser ADO pour accéder à n'importe quelle source de donnée ODBC. La FAQ Perl-Win32-Database inclut des informations sur ADO :
    http://www.geocities.com/SiliconValley/Way/6278/perl-win32-database.html

La page de garde d'ADO est située à :

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/adostartpage1.asp

Win32::ODBC
Quelques extensions ont été développées pour accéder à des bases de données depuis ActivePerl. Win32::ODBC est très populaire, et disponible sur le CPAN et à cette URL :
    http://www.roth.net/odbc/

Sybase
Le module Sybperl vous permet de vous connecter au serveur SQL Sybase (et peut-être Microsoft SQL Server). La page de Sybperl, avec des liens vers la version binaire de Sybperl, est située à :
    http://www.mbay.net/~mpeppler/

Si vous choisissez d'utiliser une API de base de données qui repose sur ODBC vous devez avoir un pilote ODBC pour le DBMS que vous utilisez. Vous devrez configurer une source de données pour ce pilote sur chaque machine qui aura besoin d'accéder à la base de données. Pour plus d'information sur ODBC et comment configurer une source de données, voyez l'aide du Panneau de Contrôle ODBC.

Quelques DBMSs, comme Microsoft Access et Microsoft SQL Server, peuvent être contrôlés à travers les automatismes OLE (voir la question suivante). Voir la documentation du produit pour plus de détails.

Est-il possible d'utiliser les serveurs OLE Automation depuis les scripts Perl ?

Oui. Voir la documentation du module Win32::OLE, inclus avec Perl. Vous pouvez utiliser Win32::OLE pour contrôler une grande variété d'applications et d'APIs, y compris ADO.

Après la documentation, vous pouvez lire la FAQ sur OLE.

Peut-on accéder aux objets DAO depuis les scripts Perl ?

Vous devriez utiliser Win32::OLE pour accéder à ces API. Voir la question Est-il possible d'utiliser les serveurs OLE Automation depuis les scripts Perl ? et consulter la documentation DAO.

Peut-on envoyer un message Internet depuis Perl ?

Si vous avez besoin d'envoyer des messages Internet, vous devriez utiliser Net::SMTP, Mail::Sender, ou Mail::Sendmail. Pour plus d'information sur ces modules voir Comment envoyer des emails depuis ActivePerl ?.

Peut-on accéder à MAPI depuis les scripts Perl ?

Vous pouvez utiliser le module Win32::OLE pour créer une instance d'une session MAPI et envoyer un message. Pour que cela marche, vous devez avoir messaging configuré correctement sur votre machine. Si vous utilisez Microsoft Exchange, il y a de fortes chances pour que cela fonctionne.

Si vous avez besoin d'envoyer des messages Internet, vous devriez utiliser Net::SMTP. Pour plus d'information sur Net::SMTP voir Comment envoyer des emails depuis ActivePerl ?. Voici un exemple de script qui envoie un message en utilisant MAPI :

    # Nom et Mot de passe de l'expéditeur
    #
    my $sender = "VOTRE NOM ICI";
    my $passwd = "VOTRE MOT DE PASSE ICI";
    # Crée une session MAPI
    #
    use Win32::OLE;
    $session = Win32::OLE->new("MAPI.Session")
        or die "Could not create a new MAPI Session: $!";
    # Tente de se logger.
    #
    my $err = $session->Logon($sender, $passwd);
    if ($err) {
        die "Logon failed: $!";
    }
    # Ajout d'un message dans OutBox.
    #
    $msg = $session->Outbox->Messages->Add();
    # Ajout du destinataire.
    #
    $rcpt = $msg->Recipients->Add();
    $rcpt->{Name} = "NOM DU DESTINATAIRE ICI";
    $rcpt->Resolve();
    # Crée un Sujet et un Corps de message.
    #
    $msg->{Subject} = "Test Message";
    $msg->{Text} = <<EOF;
    Ceci est un simple message de test.
    À votre santé,
    M. Email
    EOF
    # Envoie le message et de délogge.
    #
    $msg->Update();
    $msg->Send(0, 0, 0);
    $session->Logoff();

Existe-t-il une implémentation DBM pour ActivePerl ?

Oui. SDBM_File est un clone gratuit de DBM, et il est implémenté et distribué avec ActivePerl. Vous pouvez l'utiliser comme suit :

    use SDBM_File;
    use Fcntl;
    tie( %myhash, "SDBM_File", 'myfile', O_RDWR | O_CREAT | O_BINARY, 0666 )
        or die( "Can't tie: $!" );
    $myhash{"bibim"} = "bap";
    untie( %myhash );

Après que le fichier DBM soit attaché, vous pouvez l'utiliser comme un tableau associatif.

Peut-on faire de la programmation GUI avec ActivePerl ?

À partir du Kit de Ressource Perl pour Win32, la librairie Tk a été portée avec succès sous ActivePerl. Tk version 8xx et plus ont maintenant le rendu des programmes Windows, et non plus la vieille apparence UNIX des versions précédentes. [Depuis la version 5.6.1 Perl/Tk est inclus dans la distribution d'ActivePerl. -NdT]

Vous pouvez aussi utiliser le module Win32::GUI qui permet de faire/manipuler des GUI en Perl. Ce module utilise les widgets Windows pour donner l'apparence des programmes Windows.

Pour des informations sur Tk, regardez :

    http://w4.lns.cornell.edu/~pvhp/ptk/ptkTOC.html       (Perl/Tk FAQ)
    http://perltk.org/
    http://www.lehigh.edu/~sol0/ptk/ptk.html  (use Tk; - Stephen Lidie)
    http://ptktools.sourceforge.net/     (Perl/Tk Tools - Slaven Rezic)

Pour Win32::GUI, allez à

    http://dada.perl.it/#gui
    http://dada.perl.it/gui_docs/gui.html

[Il existe aussi, pour Windows, les boîtes à outils graphiques :

    http://wxperl.sourceforge.net/       (wxPerl)
    http://www.prima.eu.org/             (Prima)

-NdT]

Win32::MsgBox permet d'afficher une fenêtre message rapidement et facilement, par exemple :

    use Win32;
    MsgBox("Test", "Ceci est un test", 48);
    # Affiche une boîte de dialogue avec un point d'exclamation et un bouton 'Ok'
    sub MsgBox {
        my ($caption, $message, $icon_buttons) = @_;
        my @return = qw/- Ok Cancel Abort Retry Ignore Yes No/;
        my $result = Win32::MsgBox($message, $icon_buttons, $caption);
        return $return[$result];
    }

La dernière valeur, $icon_buttons, est la somme de deux valeurs, la valeur de l'icône et celle des boutons. Par exemple, si vous avez besoin d'une boîte de dialogue avec un point d'interrogation et les boutons 'Ok' et 'Cancel' la valeur est 32 (interrogation) + 1 (Ok, Cancel) = 39. Les valeurs sont listées ici :

    Icons:
       0 - pas d'icône
      16 - Main
      32 - Question
      48 - Exclamation
      64 - Asterisque
    Buttons:
      0 - Ok
      1 - Ok, Cancel
      2 - Abort, Retry, Ignore
      3 - Yes, No, Cancel
      4 - Yes, No
      5 - Retry, Cancel

Existe-t-il un portage d'Oraperl pour Win32 ?

Oraperl est disponible en couche d'émulation par dessus DBD::Oracle. Oraperl est inclus avec la distribution DBD::Oracle. Parce que l'interface DBI évolue, l'émulation Oraperl est recommandée car ses API sont plutôt stables. Plus d'informations à :

    http://dbi.perl.org/doc/faq.html

Quels modules accompagnent la distribution Win32 de Perl ?

En plus des librairies standard, il existe plusieurs modules spécifiques Win32 qui sont distribués avec Perl pour Win32. Cela comprend :

Ils sont documentés dans la page Win32mod. Il existe aussi un certain nombre de fonctions internes au package Win32, qui sont :

Ne sont plus inclus dans le module Win32 :

[Plus d'informations sur les extensions Win32 pour Perl peuvent-être trouvées sur la page de Philippe Le Berre à :

    http://www.le-berre.com/

-NdT]

Où trouver d'autres modules pour Perl pour Win32 ?

Des modules pour Perl pour Win32 sont disponibles sur le CPAN (Comprehensive Perl Archive Network), une archive Perl avec des miroirs répartis tout autour du monde. Pour trouver le miroir le plus proche de vous, consultez :

    http://www.perl.com/CPAN-local/modules/by-module/Win32/

(Cela va vous envoyer automagiquement sur le miroir le plus proche. Cool, non ?)

Existe-t-il un module GD pour Perl pour Win32 ?

GD fonctionne maintenant avec Windows, et peut être installé avec PPM (Perl Package Manager). Cette bibliothèque graphique permet la création et des manipulations des images au format PNG .

Qu'est-ce que CPAN et comment l'utiliser ?

CPAN est le Comprehensive Perl Archive Network, une collection de tout ce que vous avez toujours voulu en programmation Perl. L'archive originale est en Finlande, mais elle est miroitée sur des serveurs FTP partout dans le monde.

Vous pouvez vous connecter sur le plus proche miroir CPAN en utilisant le redirecteur CPAN à http://www.perl.com. L'URL suivante :

    http://www.perl.com/CPAN/

redirigera votre navigateur vers le miroir CPAN le plus proche (sur votre continent et peut-être même juste à quelques sauts de vous). Cette URL

    http://www.perl.com/CPAN

vous laisse choisir un miroir CPAN vous-même, et vous donne un peu plus d'informations.

CPAN est très bien pour trouver des modules pour ActivePerl. Cependant, lisez Comment utiliser les modules du CPAN ? pour plus d'informations.

Existe-t-il une librairie pour lire ou écrire Microsoft Office ou un autre fichier d'application ?

En général, il n'y a pas de modules pour lire ou écrire les fichiers d'applications, comme Microsoft Word, Microsoft Excel, Microsoft Access, WordPerfect, Lotus 1-2-3, etc.

Cependant, beaucoup sinon toutes les applications majeures de Windows supportent l'automatisme OLE. Vous pouvez utiliser le support d'automatisme OLE des applications Microsoft Office pour lire et écrire des fichiers à leur format, par exemple. Voir la documentation de votre application pour des informations sur son support de l'automatisme OLE. Voir Est-il possible d'utiliser les serveurs OLE Automation depuis les scripts Perl ? pour plus d'informations.

Un cas spécial est celui des fichiers de bases de données, comme les fichiers Microsoft Access, FoxPro, dBase ou Paradox, qui peuvent être accéder en utilisant ODBC (Open DataBase Connectivity). Voir Comment accéder à une base de données depuis un script Perl ? pour des détails sur l'utilisation d'ODBC avec ActivePerl.

Retour en haut de la page


AUTEUR ET COPYRIGHT

Cette FAQ a été à l'origine assemblée et maintenue par Evangelo Prodromou. Elle a été révisée et mise à jour par Brian Jepson de O'Reilly and Associates, et David Grove et David Dmytryshyn d'ActiveState.

Cette FAQ est dans le domaine public. Si vous l'utilisez, cependant, vérifiez, s'il vous plaît, que vous donniez le crédit aux auteurs originaux.

Retour en haut de la page


VERSION FRANÇAISE

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

Retour en haut de la page


TRADUCTION EN FRANÇAIS

Fabien Martinet <ho.fmartinet@cma-cgm.com>

Jean-Louis Morel <jl_morel@bribes.org> (mise à jour perl 5.8.0)

Retour en haut de la page

 perlwin32faq9 - Modules et scripts exemples