2015-10-29 4 views
1

Comment afficher les arguments/paramètres pouvant être transmis à un nouvel objet sur un module Perl? Je vais habituellement au CPAN et je regarde la section SYNPOSIS pour des exemples de ce que j'essaie de faire. Mais les exemples et les descriptions qu'ils fournissent ne sont pas toujours complets, et je finis par devoir chercher des exemples d'autres personnes utilisant le module et j'espère que quelqu'un a essayé d'utiliser le module de la même manière que moi.Comment afficher les arguments d'un module Perl?

Voici le dernier module que je suis en train d'utiliser

use Bio::DB::GenBank; 
my $gb = Bio::DB::GenBank->new(-format  => 'Fasta', 
           -seq_start => 2, 
           -seq_stop => 51, 
           -strand  => 1, 
           -complexity => 1); 

Comment puis-je voir la liste complète des paramètres que je peux passer à Bio::DB::GenBank->new(). Existe-t-il un moyen d'afficher la définition de l'objet/objet/module? Ou le constructeur de l'objet?

EDIT: Je viens juste de réaliser que je peux télécharger le module depuis CPAN et regarder le code dans le module moi-même pour les paramètres d'objet mais je me demandais si quelqu'un avait une meilleure façon de le faire?

+1

L'inspection de code est la méthode fiable. Se référer à la documentation est le moyen officiel, mais comme vous l'avez noté - parfois manquant :) – Sobrique

Répondre

2

Modules sur CPAN - le moyen de savoir avec certitude est de regarder le code, et voir ce qu'ils font. Ce n'est pas toujours particulièrement simple, mais c'est la seule source définitive de vérité.

Sinon, il y a la documentation, où le développeur devrait avoir décrit la fonctionnalité du module (public). Cela n'arrive pas toujours, et parfois ce qui est clair pour le développeur n'est pas aussi clair pour tous les utilisateurs potentiels du module. Mais ceci est en partie le compromis de l'utilisation d'une bibliothèque de modules de contribution publique - certains modules sont si bien polis qu'ils brillent, et d'autres ... eh bien, plutôt plus d'un travail en cours. La bonne nouvelle est que la plupart des mainteneurs sont réceptifs aux mises à jour et correctifs. Souvent, quelque chose «manque» simplement à cause du temps disponible, ou bien il répond aux exigences actuelles en termes de fonctionnalité.

+0

Honnêtement, je ne trouve pas cela très utile. La question portait sur un module spécifique et la réponse n'est même pas liée au langage de programmation en question. Ceci est extrêmement vague et ne permet pas d'obtenir une réponse. Nous pouvons toujours dire «regardez le code», mais il doit y avoir une meilleure solution, et dans ce cas, il y en a certainement une. – SES

+0

Je vais attendre quelques jours de plus pour d'autres réponses, puis je vais accepter un. – cooldood3490

1

La première chose à faire est de regarder la documentation, ce qui est là des règles Perl, car il est disponible à la ligne de commande:

perldoc Bio::DB::GenBank 

que l'enregistrement prend pas de temps. Si cela ne vous dit pas tout ce que vous devez savoir, comme dans ce cas, je regarde toujours les tests suivants. À mon avis, c'est la façon la plus simple de voir comment une classe/méthode devrait fonctionner. Lire de bons tests est meilleur/plus rapide que de lire de la documentation si vous avez un peu d'expérience. La lecture du code est généralement le dernier recours pour moi car il est souvent difficile de donner un sens au code, même simple, et je pense que cela pourrait être attribué aux différences stylistiques (et à Perl lui-même).

À ce stade, si vous ne trouvez pas de tests ou de documentation, vous devez vous demander si ce module vaut votre temps. Je dirais presque toujours que la réponse est non. Les modules utiles et populaires devraient avoir quelques tests de base et docs. Une chose à savoir (surtout avec BioPerl) est que s'il y a de la documentation, cela peut provenir d'un autre module. Les gens copient souvent des modules, modifient le code, puis le téléchargent sur CPAN ou github: - /.

Vous n'avez pas posé de question spécifique mais je suppose que vous essayez d'obtenir/manipuler des données de GenBank. Dans ce cas, je recommanderais d'utiliser directement l'interface E-Utilities de NCBI ou d'utiliser le Bio::DB::EUtilities de BioPerl (ce qui n'est pas essentiel, installation séparée). Il y a quelques guides gentils tels que le EUtilites Cookbook et le EUtilities webservices guide, bien que ce dernier soit basé sur des services de SOAP et peut être au-delà de ce dont vous avez besoin pour la plupart des utilisations.

Si vous avez une question plus précise, je serais heureux de vous aider.