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


in reply to return +0

Unary + does nothing. It says so right in the documentation.

⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊

Replies are listed 'Best First'.
Re^2: return +0
by arunvelusamy (Monk) on Nov 27, 2007 at 08:15 UTC
    Provided, i found below code in Apache-Compress-1.005/Compress.pm

    I belive '+' has some importance.

    if (!defined($how_decide) || lc($how_decide) eq 'header') { return +($r->header_in('Accept-Encoding')||'') =~ /gzip/; } elsif (lc($how_decide) eq 'user-agent') {

    updated: Removed the duplicate "found" word in my comment.

      In that example the + tells perl that the parens are not enclosing the arguments to a function call, so it is parsed correctly.

        Here's a nice simple example of when you might need to use it:

        $ perl -e 'print (2+3)/5' 5

        How on earth does that print 5? Because it evaluates as "print the result of 2 + 3, then divide print's return value (which is 1 if print worked) by 5, and then do nothing with the result". This is obvious if you stick another print in there:

        $ perl -e 'print print (2+3)/5' 50.2

        which is parsed as:

        print((print(2+3))/5)

      I belive '+' has some importance.

      For me, return values of +0, -0, and 0 are indistinguishable from each other - which means that the '+' has no significance at all:
      C:\_32>perl -MDevel::Peek -e "Dump(+0)" SV = IV(0x1fe2d28) at 0x343cbc REFCNT = 1 FLAGS = (PADBUSY,PADTMP,IOK,READONLY,pIOK) IV = 0 C:\_32>perl -MDevel::Peek -e "Dump(-0)" SV = IV(0x432d2c) at 0xd73cec REFCNT = 1 FLAGS = (PADBUSY,PADTMP,IOK,READONLY,pIOK) IV = 0 C:\_32>perl -MDevel::Peek -e "Dump(0)" SV = IV(0x2492d28) at 0x23cbc REFCNT = 1 FLAGS = (PADBUSY,PADTMP,IOK,READONLY,pIOK) IV = 0
      (Replace the double quotes with single quotes if you're on a *nix-type operating system.)

      Cheers,
      Rob

        Just note that -.0 is distinct from .0.

        ⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊