The Devel::* namespace is intended for modules that are not used
as part of the normal operation of a script.

Tim.

On Sun, Mar 25, 2001 at 06:48:36PM +0200, Raphael Manfredi wrote:
> I have finally taken the time to release two important modules, which
> are building blocks for other modules of mine that are still pending
> release in the wait queue... I just lack time ticks to process them ;-)
> 
> They don't work with 5.6.0, so don't even try it.  They work with 5.005_03
> of course, and where tested OK by myself with 5.6.1-TRIAL1 on Linux.
> 
> The first module is Getargs::Long, which gives easy named parameter usage
> in routines, with optional type checking of the arguments:
> 
>     use Getargs::Long;
> 
>     sub f {
>         my ($x, $y ,$z) = getargs(@_, qw(x=ARRAY y=i z=s));
>         ....
>     }
> 
>     # And now for the call...  Argument order does not matter, of course
>     f(-x => ['a', 'b'], -y => 1, -z => "foo");
> 
> The second module is Devel::Datum (it uses Getargs::Long) which provides
> some support for Programming by Contract, and flexible tracing abilities,
> which can be configured via a mini-language.  Devel::Datum cooperates with
> Log::Agent for its tracing routines.
> 
> It is very different from Class::Contract, in that it does not alienate
> the Perl syntax too much, although it adds some clutter of its own:
> 
>     use Devel::Datum qw(:all on);
> 
>     sub routine {
>         DFEATURE my $f_, "optional message";
>         my ($a, $b) = @_;
>         DREQUIRE $a > $b, "a > b";
>         $a += 1; $b += 1;
>         DASSERT $a > $b, "ordering a > b preserved";
>         my $result = $b - $a;
>         DENSURE $result < 0;
>         return DVAL $result;
>     }
> 
> The Devel::Datum module is a co-development between Christophe Dehaudt and I.
> It is derived from a C/C++ runtime called... DATUM, authored by the same
> people...
> 
> Raphael Manfredi & Christophe Dehaudt

Reply via email to