http://www.perlmonks.org?node_id=1021846


in reply to Unexpected behavior of function 'say'

It's the indirect method call syntax. Your code is interpreted as:

use strict; use warnings; STDOUT->say('like a charm');

So you're not using the say keyword; you're using the say method in IO::Handle.

package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name