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. | [reply] [d/l] |
In that example the + tells perl that the parens are not enclosing the arguments to a function call, so it is parsed correctly.
| [reply] [d/l] |
$ 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) | [reply] [d/l] [select] |
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 | [reply] [d/l] |
| [reply] |