sub runme { my $arg=shift; # do something very long that has no side effects return @stuff; } sub a { runme(1); } sub b { runme(2); } sub c { runme(3); } my @results = grandcentral_like_runall( \a, \b, \c );