Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Quels sont les modules Perl intéressants pour coder ? Venez débattre

Le , par Jasmine80

0PARTAGES

3  0 
Bonjour à tous,

Je me demandais, les modules complémentaires que vous pourriez conseiller, qui donnent des informations sur le script et aident à l'améliorer, qui renseignent sur la synthaxes, sur les temps d'exécussion de différents blocs de code. Je n'ai aucun besoin spécifique, c'est un poste ouvert, pour discuter, voir ce qui existe, découvrir de nouvelles choses, échanger nos expériences sur ce sujet.

D'avance merci,

Jasmine.

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de magicshark
Membre averti https://www.developpez.com
Le 01/07/2015 à 21:36
personne n'en parle car c'est le béaba mais je me dis que si un débutant traverse cette discussion ...
donc pour moi le plus utile c'est Data:umper; qui permet de rendre des donnée au format string afin de pouvoir les afficher.
2  0 
Avatar de Philou67430
Expert confirmé https://www.developpez.com
Le 01/07/2015 à 9:04
Pour le benchmarking, les modules :
- Bench
- Benchmark
Pour l'analyse de mémoire :
- Devel::Size
1  0 
Avatar de Philou67430
Expert confirmé https://www.developpez.com
Le 02/07/2015 à 9:35
Tant qu'à parler des évidences, n'oublions pas le debugger : ils sont tellement nombreux, ces débutants, à ignorer l'existence du debugger...
Il permet, en dehors de sa fonction première de trouver les erreurs, d'expérimenter des expressions (les unilignes également)
1  0 
Avatar de cmcmc
Membre confirmé https://www.developpez.com
Le 16/12/2015 à 18:08
Citation Envoyé par magicshark Voir le message
personne n'en parle car c'est le béaba mais je me dis que si un débutant traverse cette discussion ...
donc pour moi le plus utile c'est Data:umper; qui permet de rendre des donnée au format string afin de pouvoir les afficher.
Pour ma part j'ai pratiquement abandonné l'excellent mais vénérable Data:umper au profit de Data:ump. Il ne fait pas partie du core et il faut donc l'installer mais à mon avis les bénéfices sont patents.

En particulier dd est une fonction fournie par Data:ump qui est selon moi plus facile d'utilisation et donne des résultats plus lisibles et plus compacts que Data:umper pour des impressions de test ou de debug. Elle est par exemple capable d'aggréger 0, 1, 2, 3, 4 en un intervalle 0 .. 4:
Code : Sélectionner tout
1
2
3
4
5
6
Taisha:~/perl/forum $ perl -MData::Dump -e '
  my @l = (0, 1, 2, 3, 4, 11, 20 .. 24);
  dd @l;
'
(0 .. 4, 11, 20 .. 24)
Taisha:~/perl/forum $
De plus pour l'impression de hashrefs elle trie automatiquement les clés :

Code : Sélectionner tout
1
2
3
4
5
6
Taisha:~/perl/forum $ perl -MData::Dump -e '
  my $hr = { qw(A noir E blanc I rouge U vert O bleu) }; 
  dd $hr
'
{ A => "noir", E => "blanc", I => "rouge", O => "bleu", U => "vert" }
Taisha:~/perl/forum $
On peut obtenir un résultat comparable avec Data:umper mais c'est fastidieux :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
Taisha:~/perl/forum $ perl -MData::Dumper -e '
  my $hr = { qw(A noir E blanc I rouge U vert O bleu) };
  local $Data::Dumper::Sortkeys  = 1;
  local $Data::Dumper::Terse     = 1;
  local $Data::Dumper::Indent    = 0;
  local $Data::Dumper::Quotekeys = 0;
  print Dumper($hr), "\n"
'
{A => 'noir',E => 'blanc',I => 'rouge',O => 'bleu',U => 'vert'}
Taisha:~/perl/forum $
L'interface proposée ne se limite pas à dd (voir en particulier ddx et pp). Globalement, c'est un module remarquablement bien conçu et très DWIM (Do What I Mean). Data:umper aussi, mais ce dernier est limité dans son évolution par les exigences de compatibilité arrière (il existe depuis la version 5.005...).
1  0 
Avatar de hotcryx
Membre extrêmement actif https://www.developpez.com
Le 23/12/2015 à 18:11
Hello

Depuis quelques jours, je teste les modules Benchmark et Devel::Nytprof.
Ils sont incontournables et faciles à employer.

Benchmark vous permettra principalement de comparer 2 ou plusieurs routines (avec cmpthese) faisant la même chose (codés avec vos petits doigts ^^), en donnant des statistiques du code le plus rapide.

Devel::Nytprof lance le debugger Perl et calcule le temps d'exécution de chaque instruction, chaque routine, chaque module.
Les résultats sont visualisables en html avec des codes de couleurs (rouge/vert...).

Pour profiler par exemple le script foo.pl:
Code : Sélectionner tout
perl -d:nytprof foo.pl
Rem: un fichier nytprof.out sera créé

ensuite en terminal, pour générer les fichiers html à partir du fichier nytprof.out:
Code : Sélectionner tout
nytprofhtml
#répertoire créé contenant les fichiers générés:
Code : Sélectionner tout
cd nytprof
et ouvrez index.html avec un browser ou via
Code : Sélectionner tout
nytprofhtml --open
(enjoy)

pensez à renommer le répertoire nytprof pour comparer vos changements et pensez également à profiler vos modules.

Rem: j'ai gagné 300 ms en accès sur 1.5 sec d'un CGI => 1.2 cgi
(c'est un cgi avec accès mysql (sans index), ldap, graphe mensuel, json et jquery, je peux encore gagner du temps...)

Prochaine étape possible: utiliser du caching.
Ex: Cache::FastMmap
Il y en a une floppée comme sqlite, tie, mmap, memoize, CHI... à vous de trouver votre bonheur en utilisant la mémoire, un fichier local ou une db locale...
Ou alors passer au fastcgi, psgi...

Rem: j'ai essayé CGI::Simple (moins lourd que CGI) mais l'ai trouvé plus lent sur un serveur IIS !
1  0 
Avatar de Lolo78
Rédacteur/Modérateur https://www.developpez.com
Le 30/06/2015 à 19:01
Ceux qui me viennent en tête là tout de suite (outre strict et warnings):
  • diagnostics: warnings et messages d'erreur plus détaillés
  • Perl::Critic:respect des Perl Best Pracices de Damian Conway
  • B:: Deparse: décompile l'arbre d'opcodes et permet de comprendre comment Perl a interprété ton code (utile, par ex. pour déjouer des problèmes de précédence)
  • Plus généralement les modules du domaine B:
  • Perl::Tidy - indenter proprement du coode
0  0 
Avatar de Jasmine80
Membre émérite https://www.developpez.com
Le 01/07/2015 à 9:41
Merci pour vos réponses, je vais y regarder de plus près.

Bonne journée.
0  0 
Avatar de Lolo78
Rédacteur/Modérateur https://www.developpez.com
Le 01/07/2015 à 17:45
Ah oui, j'avais pensé aux modules de Bench signalés par Philou, mais j'ai ensuite oublié au moment d'écrire la réponse.

Il y a aussi les modules généralistes de profilage de code:
Code : Sélectionner tout
1
2
- Devel::Profile
- Devel::NYTProf
et ceux plus spécialisés:
Code : Sélectionner tout
1
2
- DBI::Profile
- CatalystX::Profile (petit add-on utilisant Devel::NYTProf)
0  0 
Avatar de djibril
Responsable Perl et Outils https://www.developpez.com
Le 01/07/2015 à 20:10
Pour compléter : http://www.developpez.net/forums/d34...ire-code-perl/
0  0 
Avatar de Lolo78
Rédacteur/Modérateur https://www.developpez.com
Le 02/07/2015 à 8:13
Citation Envoyé par magicshark Voir le message

donc pour moi le plus utile c'est Data:umper.
tile
Ah oui, quel incroyable oubli! Oui, tu as raison, c'est bien l'un des plus utiles ou le plus utile. ++
0  0