10
votes

Quels modules Perl sont utiles pour la validation des arguments du sous-programme?

Je recherche un module à usage général de prendre la corvée à sortir de la validation des arguments de sous-programme et de méthode. J'ai numérisé à travers diverses possibilités sur cpan: paramètres :: Valider < / a>, params :: intelligent , getargs :: Mixte , getArgs :: long et quelques autres.

Toute information sur les avantages et les inconvénients de ces modules ou d'autres modules serait apprécié. Merci.


0 commentaires

3 Réponses :


6
votes

Si vous commencez à utiliser Moose code> , vous Trouver Moosex :: Types Code> à votre goût. Les types ont automatiquement un type is_ $ () et to_ $ type (). Celles-ci sont assurées à vous assurer que la saisie passe des contraintes de type ou que votre entrée a une coercition valide au type. Je les aime mieux, même pour ces types de choses, car vous pouvez vous assurer que l'état de votre objet a lesdits types d'aucun coût supplémentaire.

use Moose;
has 'foo' => ( isa => MyType, is => ro );

sub _check_my_type {
  my ( $self, $type ) = @_;
  is_MyType( $type );
};


2 commentaires

Moose n'est pas une mauvaise suggestion si vous pouvez l'utiliser. Si vous ne pouvez pas, la souris est la lumière de l'orignal. Cela vous obtiendra le type de vérification et quelques autres choses sans toutes les dépendances de Moose et avec le même temps de compilation. Pour être clair, je <3 orignal, mais pour les CGI et tel n'est pas toujours le meilleur choix.


La souris n'est pas activement développée. C'est un projet mort (par les documents de la souris.pm utilise l'orignal au lieu de la souris.). Malheureusement, les documents de la souris ne le suggèrent même pas pour CGI! Au lieu de cela, ils disent "bien que des progrès significatifs ont été accomplis au fil des ans, la pénalité de la compilation est une non-starter pour certaines applications très spécifiques. Si vous écrivez une application de ligne de commande ou un script CGI où le temps de démarrage est essentiel, vous pouvez ne pas être capable d'utiliser Moose. Nous vous recommandons de pouvoir utiliser http :: Moteur et FastCGI pour ce dernier, si possible. " RT.CPAN.ORG/PUBLIC/BUG/DISPLAY.HTML?ID= 42203



5
votes

Jetez un coup d'œil à Moosex :: Méthode :: Signatures qui Fournit un peu plus que de valider les arguments.

Exemple de POD: P>

use MooseX::Declare;

class Foo {

    method morning (Str $name) {
        $self->say("Good morning ${name}!");
    }
}


0 commentaires

2
votes

Je recherche actuellement la même question que le O.P.

J'ai remarqué que Dave Rolsky - Programmeur Hyper-productif de Moose Fame - a récemment pris la maintenance des paramètres :: Validate, donc je pense que c'est un bon signe. Le module n'a pas été mis à niveau depuis 2003. Donc, je suppose que cela peut toujours être utilisé pour vérifier les paramètres de sous-programme.


1 commentaires

J'aime les paramètres :: Validate, mais il semble préférer mourir plutôt que de signaler en quelque sorte les paramètres non valides et laisser le script continuer à courir ...