http://qs321.pair.com?node_id=1226973


in reply to New Discovery!!! (sub call without parentheses)

I always use parens when calling user-defined subroutines and methods because:

As a matter of style, some folks find the code easier to read when user-defined functions are always called with parens and built-in functions always called without parens. Perl Best Practices endorses this style:

Note that:

use SomeModule (); is equivalent to: require SomeModule;

while:

use SomeModule; is equivalent to: require SomeModule; SomeModule->import();

with use performed at compile time, require at run time. See perlmod for details.

See Also (Update 2021)

Replies are listed 'Best First'.
Re^2: New Discovery!!! (sub call without parentheses)
by stevieb (Canon) on Dec 08, 2018 at 23:00 UTC

    Two very good points there.

    I always use parens on my user-defined functions whether I've got parameters or not. Kind of a habit actually now that I'm fluent in more than just a couple of languages, most of which enforce using parens. In fact, thinking about it, I think Perl's the only language which *doesn't* enforce parens if a function is pre-declared. Also, at a glance (at least with my own code), it's easier to identify built-ins, as I typically don't use parens for them (eg: sleep 10;).

    The only time I'll leave parens off of a call, is if it's a method call where I'm not sending in any params:

    my $object = My::Thing->new(speak => 'hi'); ... $object->speak;
      > I think Perl's the only language which doesn't enforce parens if a function is pre-declared

      Ruby never does, but probably you wanted to say "if and only if" ?

      The possibility to omit parenthesis is essential for many syntactic sugar and DSL approaches.

      Compare "has" in Moose which looks like a keyword.

      update

      example

      has 'first_name' => ( is => 'rw', isa => 'Str', );

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

Re^2: New Discovery!!! (sub call without parentheses)
by LanX (Sage) on Dec 08, 2018 at 19:25 UTC
    Yes, but with exceptions.

    When designing syntactic sugar and/or DSLs its useful to leave the parentheses off.

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery FootballPerl is like chess, only without the dice