Your situation made me think back to my early days, facing
the same sort of problem with masses of C code; back then
(before internet connectivity was common), I actually wrote
my own code indexer in C to read a bunch of C source files
and print a simple table that lists the functions defined
in each file, and the subroutines called from within each
function. It really helped.
So, how hard could it be to do that in Perl? Well, not that
hard, if you're willing to be content with less than (but
usually close to) 100% accuracy in the "precision and recall"
measures of subroutine detection.
It's a real bare-bones, quick-and-dirty, not-too-subtle
attempt, but it's here in case you want to try it