Perl est installé par défaut sous AIX. Cela présente l'énorme avantage en particulier pour l'administrateur système, de fournir un langage de script disponibles sur tous ses serveurs (contrairement à python que l'on doit installer à partir d'une vieille version de l'AIX TOOLBOX ou d'un téléchargement d'activestate). Malheureusement, le perl inclus dans AIX est assez restreint. Un petit tour d'horizon va nous permettre de mieux maîtriser perl sous AIX et de l'améliorer.
Tous les modules de perl ne sont pas installés sous AIX.
Comment connaitre les modules perl installés ? Il existe plusieures manières de faire.
# cd /usr/opt/perl5/bin /usr/opt/perl5/bin # ./instmodsh -l Available commands are: l - List all installed modules m- Select a module q - Quit the program cmd? l Installed modules are: Crypt::SSLeay Digest HTML::Parser HTML::Tagset IO::Socket::INET6 MIME::Base64 Perl Socket6 URI XML::LibXML XML::LibXML::Common XML::NamespaceSupport XML::Parser XML::SAX libwww-perl
Pour trouver l'emplacement de perl:
lslpp -f perl.rte | grep perl
perl -MFile::Find=find -MFile::Spec::Functions -Tlwe 'find { wanted => sub { print canonpath $ if /\.pm\z/ }, no chdir => 1 }, @INC' /usr/opt/perl5_64/lib/5.12.2/inc/latest.pm /usr/opt/perl5_64/lib/5.12.2/inc/latest/private.pm /usr/opt/perl5_64/lib/5.12.2/overload/numbers.pm /usr/opt/perl5_64/lib/5.12.2/warnings/register.pmUne autre manière de faire que je préfère et que je vous conseille, repose sur le même principe mais qui présente l'avantage de s'éloigner des contraintes d'installation:
perl -e 'while (<@INC>) { while (<$ /*.pm>) { print "$ \n"; } }'
On utilise le module MExtUtils::Installed en ligne de commande. Celui-ci va lister tous les modules.
Soit avec la ligne de commande:
perl -MExtUtils::Installed -e '$inst = ExtUtils::Installed->new(); @modules = $inst->modules(); print join("\n", @modules);' Archive::Tar Archive::Zip Font::TTF IO::Compress IO::Stringy Mail::Sendmail OLE::Storage_Lite PDF::API2 Perl Spreadsheet::WriteExcel
Soit avec celle-ci:
perl -MExtUtils::Installed -E 'say for ExtUtils::Installed->new()->modules()' Archive::Tar Archive::Zip Font::TTF IO::Compress IO::Stringy Mail::Sendmail OLE::Storage_Lite PDF::API2 Perl Spreadsheet::WriteExcel define
Le plus simple est de télécharger les modules à partir du site CPAN. Vous pouvez aussi construire vous-même vos propres modules et les installer.
Il faut ensuite:
gunzip -c Date-Simple-3.03.tar.gz | tar xvf -
cddu module>perl Makefile.PL noxs make make test
make install
Pour trouver le chemin vers un module vous pouvez utiliser perldoc.
perldoc -lm List::Util
Pour ajouter comment ajouter un repertoire personnel à la liste des modules tapez:
BEGIN { push @INC,'/home/jlb/perl/mes_modules'; }
Pour encapsuler du perl dans un script ksh (on est en AIX après tout):
#!/bin/ksh perl_email() { /usr/bin/perl << 'EOF' use EmailClient; my $obj = EmailClient-new; my $email = $obj-getData( -field = 'email' ); print "$email"; EOF } SHELL EMAIL=$(perl email)
La variable SHELL_EMAIL va contenir le résultat de la commande. L'éxecution de la commande est lancée par $( ).