Oh, good point!

Yes, but works --

  my @lines;
  $*OUT = $*OUT but role { method print($str) { @lines.push($str) } };
  note "stderr is ok";
  use Test;
  say "hello";
  is @lines[0], "hello\n", 'stdout is wrapped'

stderr is ok
ok 1 - stdout is wrapped


On Thu, Oct 25, 2018 at 9:39 PM Brandon Allbery <allber...@gmail.com> wrote:

> I didn't phrase that quite right.
>
> pyanfar Z$ 6 'my @lines; $*OUT.^find_method("print").wrap: -> $self, $str
> { @lines.push($str) }; use Test; note "hello"; is @lines[0], "hello\n",
> "wrapped err too"'
> ok 1 - wrapped err too
>
> This wraps it for every IO::Handle, not just for the IO::Handle in $*OUT.
> You may need "but" for that?
>
> On Thu, Oct 25, 2018 at 9:34 PM Brian Duggan <bdugg...@gmail.com> wrote:
>
>> On Thursday, October 25, Brandon Allbery wrote:
>> > You can't actually wrap print that way, can you? Or rather, if that
>> works
>> > it wouldn't be specific to $*ERR.
>>
>> Um, you definitely can, and yes it's not specific to $*ERR, e.g.
>>
>>     my @lines;
>>     $*OUT.^find_method('print').wrap: -> $self, $str { @lines.push($str) }
>>
>>     use Test;
>>     say "hello";
>>     is @lines[0], "hello\n", 'said hello';
>>
>> produces
>>
>>     ok 1 - said hello
>>
>> Brian
>>
>
>
> --
> brandon s allbery kf8nh
> allber...@gmail.com
>

Reply via email to