From: Gan Uesli Starling <[EMAIL PROTECTED]> > I get this complaint from 'use strict'; > > > Bareword "ckKeyBts" not allowed while "strict subs" > > in use at gus_perl/FYBB_DirTree.pm line 425. > > I know what it means. I have a sub which is defined > later in the script than it is called on line 425. > > After I put an ampersand onto &ckKeyBts at line 425 > strict stopped whining. > > My question is: what happens when this is the case? > Does Perl, on encountering this former bareword with > ampersand now attached, execute the sub which > is later defined, or does something less desireable > happen?
After you put the & there it does the right thing. Almost. That is it calls the procedure. But it gives the procedure the current @_. Almost as if you wrote ckKeyBts(@_); #!perl sub outer { print "Called outer( '", join( "', '", @_), ")\n"; &ckKeyBts; print "Exit outer( '", join( "', '", @_), ")\n"; } sub ckKeyBts { print "Called ckKeyBts( '", join( "', '", @_), ")\n"; print "Exit ckKeyBts( '", join( "', '", @_), ")\n"; } outer(1,2,10,20); __END__ It get's even worse: #!perl sub outer { print "Called outer( '", join( "', '", @_), ")\n"; &ckKeyBts; print "Exit outer( '", join( "', '", @_), ")\n"; } sub ckKeyBts { print "Called ckKeyBts( '", join( "', '", @_), ")\n"; $_[0] = 'gotcha'; print "Exit ckKeyBts( '", join( "', '", @_), ")\n"; } $x = 1; outer( $x,2,10,20); print "\$x=$x\n"; __END__ or even #!perl sub outer { print "Called outer( '", join( "', '", @_), ")\n"; &ckKeyBts; print "Exit outer( '", join( "', '", @_), ")\n"; } sub ckKeyBts { print "Called ckKeyBts( '", join( "', '", @_), ")\n"; my $first = shift(); print "Exit ckKeyBts( '", join( "', '", @_), ")\n"; } outer( 1,2,10,20); __END__ So it's probably not the best thing to do. I'd recommend either ckKeyBts(); or to define or declare the function before you use it. By "declare function" I mean sub ckKeyBts; or (if it is not going to get any parameters) sub ckKeyBts (); HTH, Jenda ===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz ===== When it comes to wine, women and song, wizards are allowed to get drunk and croon as much as they like. -- Terry Pratchett in Sourcery -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]