David Storrs writes:
> I image we've all written logging code that looks something like this
> (Perl5 syntax):
>
> sub foo {
> my ($x,$y) = @_;
> note("Entering frobnitz(). params: '$x', '$y'");
> ...
> }
>
> This, of course, throws an 'uninitialized value in concatenation or
> string' warning when your test suite does this:
>
> is( foo(undef, undef), undef, "foo(undef, undef) gives undef" );
>
> How would I best solve this problem in Perl6?
Of course, no ordinary definition of a note() sub will work, since the
concatenation happens before note is even touched. However, a macro
could do it. It might go something like this:
macro note(Perl::Expression $expr)
is parsed(/$<expr> := <Perl.arglist(:(Str))>/)
{
$expr.compile(:warnings(0));
}
Luke