nadim khemir <[EMAIL PROTECTED]> writes:
> On Friday 02 May 2008 01.24.00 Eirik Berg Hanssen wrote:
>> use Test::More tests => 1;
>> use Test::Trap;
>> trap { warn "1\n2\n3" };
>> $trap->warn_like(0, qr/1\n2\n3/);
>
> Ah! I like this. How did I miss this module??
Perhaps I just haven't been _quite_ shameless enough plugging it? ;-)
> is it possible to have trap{} return an object/sub/whatever that is created
> by
> the trap{}. The automagic $trap is too automagic for me.
Possible? Sure, if you wrap it up for that. This is pure Perl,
after all. :)
Recommended? Not really. It kinda runs counter to the design. The
idea was for trap{}/$trap to mimic eval{}/$@; for one thing
list/scalar/void context is propagated into the block; for another,
$trap is a (package, but still) global, so you may localize it.
It seems to me any alternative interface will be either overly,
un-perly verbose or else severely restricted. But, granted, the
severely restricted interface may be enough for you.
As a slightly less automagic alternative, you could name your
function and scalar explicitly; trap{}/$trap is just the default,
though you could be explicit in importing them too:
use Test::More tests => 1;
use Test::Trap qw( trap $trap );
trap { warn "1\n2\n3" };
$trap->warn_like(0, qr/1\n2\n3/);
Eirik
--
Some people have told me they don't think a fat penguin really embodies the
grace of Linux, which just tells me they have never seen a angry penguin
charging at them in excess of 100mph. They'd be a lot more careful about
what they say if they had. -- Linus Torvalds, announcing Linux v2.0