I've been working on a new module (tentatively named Sub::Parms).
use Sub::Parms qw (:ignorecase :validate);
sub some_method {
MethodParms := $self, %args;
my ($field_value, $another_field_value) = @args{'field_value','a
+nother_field'};
}
sub some_function {
ParmsHash := %args;
my ($field_value, $another_field_value) = @args{'field_value','a
+nother_field'};
}
sub _legal_thing {
unless (defined ($_[0])) { return (0. 'Not defined'); }
unless (int($_[0]) eq $_[0])) { return (0, 'Not an integer'); }
return 1;
}
sub bind_parms_example {
BindParms : (
my $handle := handle [required, is_defined, can=param];
my $thing := thing [optional, isa=CGI::Minimal];
my $another_thing := another [optional, type=SCALAR, validate=_leg
+al_thing];
my $yathing := yathing [optional, is_defined];
my $defaulted := dthing [optional, default="help me"];
)
# .....
}
The problem is, it solves the same problem as a half-dozen other modules do: How do you simply, quickly and elegantly parse named parameters passed to a function/method?
I think my module brings something new and useful to the problem (why else would anyone ever write a module?): It provides clarity in code, is much faster (3 to 4 times) than any other module that solves the same problem and provides a simple way to turn off parameter validation assertions for a module in mature code to get even more performance out of it.
But is that enough to justify yet another module solving the same problem?
Or should I just file it in Acme::* for people's entertainment and edification?
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|