j3 has asked for the wisdom of the Perl Monks concerning the following question:

When looking at a sizable existing project for the first time, does anyone know of a tool for Perl that you can run on the codebase and have it spit out summary information, ex. which classes inherit from which, which methods are overloaded, etc.? Or maybe even something to produce a diagram to help visualize the structure of the project?

I'm not sure what you'd call this. A "class browser", "object browser", or just CASE tool I suppose. Seems like it would be a time-saver when getting up to speed with a new project.

Currently, if faced with a pile of Perl code has no design docs ([sigh] serenity now, serenity now, ...), I just slog through each file, and use pencil & paper to come up with something to help visualize the system (though in the past have cobbled together crude tools to help with this, like grepping for "package", "use", and "sub").

  • Comment on project structure / class browser for Perl?

Replies are listed 'Best First'.
Re: project structure / class browser for Perl?
by agianni (Hermit) on Mar 13, 2007 at 17:25 UTC
    I've actually been looking into this over the last couple of days myself. I've come across a few CPAN modules (UML::Class::Simple looks most promising) that generate UML for code. I haven't had a chance to really dig into any of them, though.
      I was ready to write, naah, because perl is dynamic and everything can be changed at runtime, it would just be too difficult to do this properly...

      But after reading your post, I gave UML::Class::Simple a whirl, and I'm absolutely blown away. The result is phenomenal. To see my last year's work (30,000 lines) represented this way is just incredible.

      thanks for the link!


Re: project structure / class browser for Perl?
by GrandFather (Saint) on Mar 13, 2007 at 19:41 UTC
Re: project structure / class browser for Perl?
by planetscape (Chancellor) on Mar 13, 2007 at 20:09 UTC
Re: project structure / class browser for Perl?
by g0n (Priest) on Mar 13, 2007 at 22:41 UTC
    Very much quick and dirty, but I use something I knocked up last year to feed into ArgoUML:



    "If there is such a phenomenon as absolute evil, it consists in treating another human being as a thing."
    John Brunner, "The Shockwave Rider".