in reply to phantom subroutine parameter values

This will happen when you call a sub with an ampersand but without any parentheses, like the following:


Doing so makes the calling sub's @_ visible to called subroutine. To avoid this, either omit the ampersand or include empty parens when calling a sub with no args. See perlsub for more info.

Replies are listed 'Best First'.
Re^2: phantom subroutine parameter values
by rpelak (Sexton) on Apr 15, 2008 at 03:53 UTC
    Thanks guys. I knew it was something simple... That explains why a lot of my old code doesn't have ampersands... Sucks be forced to program in tcl for a few years... rpelak
      uh?! it seems a feature! in any case i like calling with the & 'cause i spot easy subroutine's calling.

      if i understand :
      sub refinemydata { my $data = shift; &is_refined:return?&rerefine;}
      could be a valid syntax too ?
      something new

        The ampersand is functional, not decorative. &func(args) is not the same as func(args). The function's prototype is ignored in the former. And &func, &func() and func() are all different. @_ is left untouched by the first.