


Archive for the 'Programmation' Category
Présentation des tableaux en Perl.
Author: admin
J’ai ouvert une catégorie programmation, il y a quelques semaines. J’y ai déjà posté des articles et je compte continuer. Je vais essayer1 de faire plus d’articles sur la programmation et notamment à propos de Perl. Les articles pourraient paraître un peu trop pris par la main, même pour certaines choses assez simple, c’est pour que tout le monde puisse suivre y compris les débutants. Certains articles pourraient paraître sans intérêt et trop détaillés pour des concepts pourtant simple à comprendre, mais moi ça me plaît. Cela va me forcer à m’entraîner à bien expliquer les choses, car ce n’est pas forcément mon fort, et être encore un peu meilleur et plus à l’aise, chaque explication et relecture apporte une nouvelle compréhension, c’est le même principe que la pratique, c’est donc important surtout pour moi. Pour écrire mes articles je servirais de mes connaissances personnelles et pour structurer mes idées je m’aiderai généralement de différent écrits de référence que j’aurais pu lire, malgré que cela sera avec ma vision, il pourrait arriver que certains passage puissent vous sembler familiers2. Désolé pour cette introduction un peu longue ça sera la dernière fois.
Je vais présenter un peu l’idée du fonctionnement des tableaux en Perl. Pour commencer le plus simple serait de prendre un exemple du monde réel. Par exemple si on vous demande de citer le nom des joueurs d’une équipe de football. Vous allez tout simplement réciter une liste, vous allez donner un nom l’un après l’autre dans un ordre particulier. Perl dispose de primitives puissantes pour manipuler les listes et les tableaux. Il existe une différence entre les listes et les tableaux en Perl bien quel soit minime.
("Barthez", "Zidane", "Henry"); |
Nous avons donc une liste de trois footballeurs faisant parti de l’équipe de France en 983 , dans l’ordre4 . On va maintenant stocker cette liste dans une variable pour pouvoir la réutiliser, nous allons utiliser un tableau.
my @players = ("Barthez", "Zidane", "Henry"); |
On peut constater que les deux exemples sont des groupes ordonnés de valeurs, la seul différence c’est qu’un tableau et une variable qui porte un nom, il sera donc possible d’effectuer des actions sur un tableau comme modifier sa longueur, alors qu’une liste est une notion plus éphémère. Finalement on peut se présenter un tableau comme une variable et une liste comme les valeurs qu’elle contient.
Comme-dit c’est une différence minime, mais qui est tout de même bien présente. Il ne sera par exemple pas possible d’effectuer des opérations sur une liste.
pop(@tab); |
Cela fonctionne.
pop(1,2,3); |
Ici par-contre il y a un problème la fonction pop à besoin d’un identifiant et pas d’une liste de valeurs.
En conclusion, ce qu’il faut retenir c’est que les listes et les tableaux sont des groupements ordonnés de scalaires. Comme dans tout langage il existe des opérateurs et fonctions travaillant sur des listes et des tableaux proposant un accès plus rapide et pratique qu’un accès manuel aux éléments.
En Perl il n’est pas possible d’imbriquer des parenthèses pour créer une liste de liste.
my @tab_imb = ("foo", "bar", "un", "exemple"); my @tab_imb = ("foo", "bar", ("un", "exemple")); |
Les deux lignes sont donc équivalentes. Si notre besoin est un peu plus complexe et qu’on a besoin de manipuler une structure de données un peu particulière comme un tableau de hachage, ou un tableau de tableau, il nous faudra utiliser des références. Les scalaires peuvent contenir des nombres, des chaines mais aussi des références. En Perl c’est toujours en utilisant des références que l’on met en place des structures complexes à plusieurs niveau. C’est de cette manière que sont implémentés des tableaux à deux dimensions, sous la forme de tableaux de références à des tableaux, un peu de la même manière qu’avec le langage C, les tableaux à deux dimensions sont des tableaux de pointeurs vers des tableaux.
Les scalaires d’un tableau sont des éléments et on peut y accéder en indiquant leur indice. Comme dans beaucoup de langage le premier élément d’un tableau en Perl est égal à 0.
my @players = ("Barthez", "Zidane", "Henry"); |
Le scalaire Barthez se trouve en première position du tableau, mais comme-dit on y accède de cette manière @players[0]. L’élément Zidane ce trouve en deuxième position et on y accède de cette manière @players[1].
En conclusion on a vu une première approche du fonctionnement des tableaux en Perl, on connaît à présent la différence entre un tableau et une liste, on sait comment accéder à un élément du tableau et on a une vague idée du fonctionnement des structures de données un peu plus complexe. Cela n’est bien-sur pas suffisant, mais vous permet de pouvoir commencer à utiliser des tableaux, comme-dit j’écrirai plus souvent la prochaine fois il est possible qu’on voit, comment supprimer les doublons d’un tableau, ou encore comment utiliser des tableaux dans ses programmes, ou alors comment trier un tableau.
- En espérant que je trouve des choses à raconter assez souvent, ce n’est pas toujours simple [↩]
- En Perl, je pourrais par exemple m’aider du CamelBook, ou encore Perl le Livre de recettes et de différente documentation [↩]
- championne du monde [↩]
- L’ordre étant dans ce cas les postes respectif de chacun, gardien de but, ensuite milieu de terrain, puis pour finir attaquant [↩]
read comments (0)Documenter vos codes
Author: admin
Lorsqu’on programme une chose importante est de bien documenter son code. Que cela soit pour vous, ou pour les personnes qui utiliseront votre code, ou passeront derrière vous. Tous les langages possède un système de documentation interne Perldoc, Javadoc, Pydoc etc…
Par exemple en Python pour documenter une fonction nous utiliseront les triples quotes, tout de suite après sa définition.
def HelloWorld() : """ Une simple fonction qui affiche un message à l'écran """ print "HelloWorld !\n" |
La description sera donc disponible via la pydoc.
En Perl nous avons le format Pod1 , la bonne vielle documentation.
Pod est un lagage de balisage qui va permettre d’écrire de la documentation pour Perl, pour vos programmes Perl, ou encore pour vos modules Perl. Il sera ensuite possible de convertir POD dans différents formats notamment du texte brute, HTML, page de man. Je vous expliquerai dans un prochain article comment utiliser POD.
Documentation POD sur enstimac
- Plain Old documentation [↩]
Divers Tips Git
Author: admin
J’utilise désormais Git comme outil de gestion de version pour mes projets et diverses autres choses, fichier de configuration, document rédigé avec LaTeX etc… Je cherchais donc tout naturellement une méthode pour avoir un peu de couleurs. Contrairement à Subversion il n’y a pas besoin de faire appel à des outils externes pour cela. Il vous suffira d’éditer votre fichier .gitconfig. Vous avez donc plusieurs manières de procéder pour ça, soit en ligne de commande via la commande git config, soit en éditant directement ce dit fichier.
git config --global color.branch auto git config --global color.diff auto git config --global color.interactive auto git config --global color.status auto |
Ce qui donnera dans le fichier de configuration ~/.gitconfig :
[color] branch = auto diff = auto interactive = auto status = auto |
C’est tout de même plus agréable de voir un peu de couleurs.
Si vous êtes désireux d’avoir des alias avec Git similaire à svn pour le status, commit, branch etc… Vous pourrez encore une fois l’indiquer via git config.
git config --global alias.st status git config --global alias.ci commit git config --global alias.co checkout git config --global alias.br branch |
Ce qui vous permettra maintenant de taper par exemple :
git st #En lieu et place de git status git ci #à la place de git commit git co #à la place de git checkout git br #à la place de git br |
Ce qui est un peu plus court ça fera du bien à vos doigts. Je rappel que la commande git checkout permet de changer de branche et non de récupérer les sources d’un dépôt contrairement à svn. J’avais déjà indiqué les commandes à utiliser pour, indiquer des informations sur votre nom d’utilisateur et l’éditeur lorsque j’avais présenté Git.
Il peut-être très pratique d’avoir accès à un aide-mémoire des diverses commandes disponible, car il arrive d’avoir de trous. Il en existe pour cela cheat git. Il existe aussi des versions svg ou png Disponible ici.
Installer un module Perl
Author: admin
Il y a plusieurs manières de procéder pour installer un module Perl. La première consiste à regarder, si il n’est pas déjà packagé pour votre distribution. Si vous êtes sous Debian ou un dérivé, vous devriez trouver la plupart du temps votre bonheur, étant donné la grande facilité de packager un module Perl pour cette dernière distribution. La paquet d’un module Perl pour Debian, généralement, se trouve de la forme libtype-nom-perl. Par exemple :
libnet-twitter-perl
ou encore
libarchive-tar-perl
C’est la méthode à préconiser pour une intégration parfaite à votre distribution.
Il peut arriver tout de même, qu’il n’existe pas de paquet pour le module que vous souhaitez installer, dans ce cas là, vous pouvez passer par le CPAN.1 Le module CPAN.pm a été préinstallé sur votre machine. Il va vous permettre d’installer et configurer des modules. Lors du première appel à cpan, il vous faudra répondre à une série de questions, notamment le chemin de gunzip. Généralement les réponses par défaut sont correctes, mais tâchez tout de même, à toujours vérifier, c’est important de faire attention à ce que l’on fait. Ensuite vous pourrez installer des modules via le cpan, soit en lançant la commande cpan, et ensuite au prompt cpan indiquez install suivi du nom du module :
install Net::Twitter |
Soit en indiquant en argument le module à installer :
sudo cpan Net::Twitter |
La dernière solution consiste à installer le module à la main, notamment lorsque le module n’est pas disponible sur le CPAN. Il vous faudra alors récupérer les sources généralement compressées au format tar.gz. Ensuite décompressez l’archive, déplacez-vous dans le répertoire, lisez le README, pour finir effectuez les manipulations qui sont généralement perl Makefile.pl qui va générer le makefile, make, make test et enfin sudo make install.
wget http://search.cpan.org/CPAN/authors/id/M/MM/MMIMS/Net-Twitter-3.05000.tar.gz tar -zxvf Net-Twitter-3.05000.tar.gz cd Net-Twitter-3.05000/ perl Makefile.PL make make test sudo make install |
Si tout s’est passé et que vous n’avez pas eu de message d’erreur le module devrait être installé. J’ai pris un mauvaise exemple, mais je n’avais pas de module non disponible sur le CPAN sous la main. C’était pour montrer la démarche. Pour vérifier que le module est bien installé :
perl -MNet::Twitter -e 1 |
Si aucun message ne s’affiche, cela signifie que le module est bien installé.
En revanche, si vous avez ce genre de message :
Can't locate Net/Twitter.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .). |
C’est qu’il y a eu un problème quelque part.
Concernant les bibliothèques que vous être en train de développer ou qu’un ami vous a gentiment fourni et que vous aimeriez tester. Vous pourrez créer un répertoire lib/perl par exemple, dans votre home personnel et indiquer le chemin à la variable d’environnement PERL5LIB :
export PERL5LIB="$HOME/lib/perl" |
Une autre solution consiste à indiquer le chemin directement dans le source :
use lib $ENV{'HOME'} . "/lib/perl"; |
Voilà, vous êtes maintenant paré à installer des modules Perl de différentes manières. N’oubliez pas, Perl, c’est bien et ce qui fait sa grande force est justement son nombre de bibliothèques disponibles sur le CPAN.
- Comprehensive Perl Archive Network qui regroupe la plupart des archives logicielles et bibliothèques écrites en Perl. [↩]


