in reply to Re^2: Any differences between method and method()?
in thread Any differences between method and method()?

Yes, as you can see from this demonstration code:

#!/usr/bin/perl -w use strict; my $list = ' FUD() => "()", "FUD" => "str", FUD => "bare", -FUD => "-", +FUD => + "+", '; sub FUD { 'fud' } for( 0 .. 1 ) { my @a = eval $list; print "@a\n"; last if $_; undef &FUD; eval 'sub FUD() { "dud" }'; } __END__ fud () FUD str FUD bare -FUD - FUD + dud () FUD str FUD bare -FUD - FUD +

While the FUD() case always calls the function (and thus gives 'fud' then 'dud') and the "FUD" case always doesn't call the function (and thus always gives 'FUD'), the other bareword cases are affected by whether or not a prototype is used and so give the follow inconsistent results:

FUD +FUD -FUD ----- ----- ------ w/ prototype: FUD FUD -FUD w/o prototype: FUD FUD -FUD
Happy debugging!

Like anybody could possibly debug such wily inconsistency! So funny.

Update: Sorry, I accidentally reversed the "w/" vs "w/o" labels in the above table. Sorry for the confusion that must have caused.

- tye        

Replies are listed 'Best First'.
Re^4: Any differences between method and method()? (=>)
by AnomalousMonk (Archbishop) on Aug 18, 2012 at 19:43 UTC
    ... the other bareword cases are affected by whether or not a prototype is used ...

    I don't get this point. While certainly inconsistent, the inconsistencies do not seem to be affected at all by whether prototyping is or is not used.

Re^4: Any differences between method and method()? (=>)
by sophate (Beadle) on Aug 19, 2012 at 04:32 UTC

    thanks for your detailed reply. I have one more question. What do the syntax +FUD and -FUD mean here?

      -FUD is intended (by the authors of Perl) to emulate the  -whatever syntax of Tcl/Tk options. The leading '-' is appended to the string into which the  FUD bareword is converted in the presence of the fat comma, any stricture against such conversion being locally nullified.

      +FUD is intended (by various monks replying) to illustrate the effect of the unary  + operator on the string into which the  FUD bareword is converted in the presence of fat comma: none at all. Contrast this with the effect of the  ! logical negation operator in the  !FUD case.

      To answer your question more generally, the syntax +FUD and -FUD (and !FUD and ~FUD and maybe some others) means that someone had a bright (and well intended) idea and far too much time on their hands, and now we're stuck with it.

      :)

      + means + and - means -

      + stringifies to "" while - stringifies to "-"