There is a simpler way, using the trick found in Re: Dynamically constructed function calls. It looks a bit horrifying, but it's legal to pass a method name in a scalar variable.
sub call_method_for_list {
my $self = shift;
my $method = shift;
foreach my $anything (@{$self}) {
$anything->$method(@_);
}
}