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!