In Perl, print STDOUT "$foo\n"; can be understood as "verb indirect-object object", where STDOUT is the recipient of the print action, and "$foo" is the object being printed.
Except that that's wrong. "$foo" is not an object -- direct or otherwise.
method $object @args;
is "indirect object syntax", in Perl lingo, and
$object->method( @args );
is "direct object syntax". Same object
; only the syntax is different. And English grammar terminology doesn't really apply well.
And the fact that @larry decided in their infinite (ly mistaken) "wisdom" to coin a completely unnecessary and superfluous alternative term for object, namely "invocant", manifests their misunderstanding of what an object is, in object-oriented programming. For "invocant" means, quite simply, "caller". But in print $fh or $fh->print, $fh is not the caller, it is the receiver. It is the object, not the subject, of the action.
I reckon we are the only monastery ever to have a dungeon stuffed with 16,