sub onefoo { my ($reasonably_named_sub, @params) = @_; whatever; for my $foo (tweaked @params) { $reasonably_named_sub->($foo); } } sub multifoo { my ($toDo, $filter, @params) = @_; whatever; for my $foo (grep $filter->(), tweaked @params) { $toDo->($foo); } }