http://qs1969.pair.com?node_id=843194

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hiya Monks, I thought I understood subroutines until I needed to use File::Find. I can make it do what I want, but I'm disturbed because I don't understand how the subroutine used as its first parameter gets $_. For example:
#!/usr/bin/perl use File::Find; find (\&testy, "."); sub testy { print $_; }
This dutifully prints each file it finds under the current working directory. However if I commend out the find command and just call that sub directly:
#!/usr/bin/perl use File::Find; #find (\&testy, "."); testy ('i am a nice parameter'); sub testy { print $_; }
it does not print 'i am a nice parameter'. This made sense to me before using File::Find since I know that subroutines have @_, not $_, even when only a single parameter is passed.

I feel like I'm missing a simple but important concept. Any input would be greatly appreciated!