develooper Front page | perl.perl5.porters | Postings from May 2016

Re: Indirect object syntax

Thread Previous | Thread Next
Ed Avis
May 25, 2016 21:25
Re: Indirect object syntax
Message ID:
Abigail <abigail <at>> writes:

>People who want to use indirect
>object syntax certainly won't start their programs with 'no indirect'.
>It's only useful for people who don't want indirect object syntax in
>their programs, but somehow use it anyway.

One advantage is that currently you get a completely weird-sounding
diagnostic when you call without () a subroutine that doesn't exist:

    % perl -E '$x = 55; bar $x'
    Can't locate object method "bar" via package "55"
      (perhaps you forgot to load "55"?)

If the parser ambiguity between method and subroutine call were resolved,
this obscure message (for an entirely not-obscure and everyday mistake)
could be fixed.  Heck, at some future point it would become possible to
check subroutine names at compile time under 'use strict' or its equivalent.

If indirect object syntax is discouraged and considered a bit of a mistake -
and I reiterate that I am not advocating this point of view, but *if* it is -
then rather than have it sitting around as a language wart that serves mostly
to ambiguate programs and trip up the unwary, better to start cleaning it up.

Ed Avis <>

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About