perl - apparent strangeness using subroutine with the multiplication operator -


please explain *apparently* inconsistent behaviour me:

use strict; sub { 2 + 2 }; print 2 * a(); # prints: 8 print a() * 2; # prints: 8 print 2 * a;   # prints: 8 print * 2;   # prints: 4 

thanks answers, both helpful - learned lot.

in last example, expression parsed a(*2) calls a glob argument *2 short name of package variable *main::2

if want a parsed function takes no arguments, need declare this:

sub () {2 + 2} 

then perl parse statement expected. in fact, if write this, perl detect constant function, , inline 4 in every place a have been called.


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -