perlwin32faq9 - Modules et scripts exemples |
perlwin32faq9 - Modules et scripts exemples
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 :
gzip -d -c Data-Dumper-2.08.tar.gz | tar xvf -Aller dans le répertoire du module.
cd Data-Dumper-2.08Consulter le fichier README.
more < READMELancer le script Makefile.PL. Il utilise le module MakeMaker pour construire un makefile vous permettant de construire l'extension.
perl Makefile.PLLancer votre utilitaire make. Il prépare l'installation du module, et compile toutes les extensions s'il en existe.
nmakeExécuter les tests du module s'il y en a,
nmake testInstaller 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.
http://dbi.perl.org/
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
est très populaire, et disponible sur le
CPAN et à cette URL :
http://www.roth.net/odbc/
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.
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.
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.
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 ?.
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();
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.
À 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
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
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]
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 ?)
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 .
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.
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.
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.
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/ .
Fabien Martinet <ho.fmartinet@cma-cgm.com>
Jean-Louis Morel <jl_morel@bribes.org> (mise à jour perl 5.8.0)
perlwin32faq9 - Modules et scripts exemples |