This is kind of cool, but I've been severely bitten by source filters in the past, and continue to have a number of personal stylistic issues with using them. What I'd like to see (and if someone knows of a CPAN module that does this, I'd be grateful) is something that would allow subs to be written thusly:
use Verifier;
my $verify = new Verifier (on_failure => sub { die(join (',',@_)) })
sub foobar {
## The '-' in front of hashref means $bar is an optional paramater
my ($foo, $bar) = $verify->type ( \@_, qw/scalar -hashref/);
print "Using $foo:\n";
return $foo unless %$bar;
for (keys %$bar) { print "$_ => $$bar{$_}\n" }
return $$bar{'result'};
}
That is, I'd really like to see verification of parameter types handled by a verifier object rather than by a source filter. Yes, I know it's not quite the same thing; but by eval'ing the type verifier call, one could achieve the same basic functionality.
Update: It turns out, thanks to a mention by dragonchild and xdg, that Params::Validate does just the above. An example of the above code, but using that CPAN module, can be found a bit further down in this discussion.
radiantmatrix
require General::Disclaimer;
s//2fde04abe76c036c9074586c1/; while(m/(.)/g){print substr(' ,JPacehklnorstu',hex($1),1)}