(I think) There's no real reason why the values shouldn't be passed in via @_ in the normal way.
sub test (&@) {
my $code=shift;
map $code->( $_, 'other', 'params' ), @_;
};
test { print "\$_ = $_ \@_ = '@_'"; } 1 .. 10;
$_ = 1 @_ = '1 other params'
$_ = 2 @_ = '2 other params'
$_ = 3 @_ = '3 other params'
$_ = 4 @_ = '4 other params'
$_ = 5 @_ = '5 other params'
$_ = 6 @_ = '6 other params'
$_ = 7 @_ = '7 other params'
$_ = 8 @_ = '8 other params'
$_ = 9 @_ = '9 other params'
$_ = 10 @_ = '10 other params'
(I think) The same could be done for File::Find and other subs that take anon. blocks/subs as args--sort blocks, List::Util functions etc.
Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
"Memory, processor, disk in that order on the hardware side. Algorithm, algoritm, algorithm on the code side." - tachyon