creation d un module PERL

Creation: 2 janvier 2015
Mise à jour:
Version: 1.0
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2015 Jean-Louis BICQUELET-SALAÜN

création d'un module PERL

Le module d'exemple Time.tm va proposer une seule fonction get_time qui retourne l'heure courrante et le jour au format HH:MM:SS JJ/MM/AAAA.

#==================================================================
# Time Perl module.
#==================================================================
package Time;
require Exporter;

our @ISA     = qw(Exporter);
our @EXPORT  = qw(get_time);   # symbol exportres par defaut (separate par des espaces)
our $VERSION = 1.00;           # numero de version

use POSIX 'strftime';

#---------------------------------------------------------------------
# retourne l'heure courrante et le jour au format HH:MM:SS JJ/MM/AAAA
# requires "use POSIX 'strftime';"
#---------------------------------------------------------------------
sub get_time
{
  return strftime( '%H:%M:%S %d/%m/%Y', localtime(time()) );
}

1;

Le programme qui va appeler le module Time.pm est

#!/usr/bin/perl
use Time;

print &get_time()."\n";

Utilisation d'un répertoire librairie spécifique

Il existe plusieures façon d'utiliser des modules Perl et d'indiquer à Perl où chercher ceux-ci.

La plus simple est de définir ou de compléter les variables d'environnement PERLLIB ou PERL5LIB.

Je préférre utiliser PERL5LIB mais on peut utiliser les deux.

Sous unix

export PERL5LIB=/home/bicqueletjl/lib

Sous windows

set PERL5LIB=c:\home=\bicqueletjl\lib

On peut aussi modifier la partie environnement du sysème et ajouter ou modifier PERL5LIB.

Création de l'arborescence du module Perl

Quand le module est prêt on peut le distribuer. Il faut utiliser l'utilitaire h2xs qui est fournit avec Perl. La syntave à utiliser est

$h2xs -AX -n nom_du_module

Par exemple

$h2xs -AX -n time

Writing time/lib/time.pm
Writing time/Makefile.PL
Writing time/README
Writing time/t/time.t
Writing time/Changes
Writing time/MANIFEST

Les options utilisées servent à préciser:

  • -A omet le code Autoloader (à utiliser quand il y a un grand nombre de modules à charger)
  • -X omet les éléments extérierus (XS eXternal Subroutine, en général du C)
  • -n précise le nom du module

La commande va produire l'arboresence

time/Makefile.PL
time/README
time/t/time.t (fichiers de test)
time/Changes
time/MANIFEST (liste des fichiers du package)

Modifiez le fichier Time/lib/Time.pm en reportant vos objets et vos fonctions perl. Adaptez la documentation.

Il reste à faire un tar (et éventuellement un gzip) du répertoire pour le distribuer.

Installation d'un Module Perl

L'installation d'un module Perl est simple. Il suffit de taper la séquence:

perl Makefile.PL
make
make install

On peut modifier l'endroit d'installation du module ainsi:

 perl Makefile.PL PREFIX=/home/bicqueletjl/lib
Writing Makefile for Time
cp lib/Time.pm blib/lib/Time.pm
Manifying blib/man3/Time.3
make
make install
./time.pl
14:29:02 02/01/2015