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

Esteemed Friars,
I just stumbled upon pycallgraph and wow, that's awesome! I don't know if it's really useful :) but it would be tremendously useful at least from a marketing point of view to have such a Perl tool... I imagine the sales people thinking already "Wow, Perl must be great!" and "Perhaps I should switch from PowerPoint to Perl?" next time I'll explain the architecture of our applications ;)
Does anyone know of something similar working with our dear Perl?

Replies are listed 'Best First'.
Re: Is there a Perl call grapher?
by bart (Canon) on Feb 12, 2007 at 12:08 UTC
    I think there must be some stuff available based on GraphViz. At least , I remember something for DBI: GraphViz::DBI.

    I can imagine a fruitful marriage between GraphViz and PPI.

Re: Is there a Perl call grapher?
by educated_foo (Vicar) on Feb 12, 2007 at 13:43 UTC
    I don't know of a graphical call grapher, but it would be pretty trivial to convert the output of B::Xref to GraphViz format.
Re: Is there a Perl call grapher?
by bsdz (Friar) on Feb 12, 2007 at 12:18 UTC
    It might be worth taking a look at this thread. I used to use a commercial package called ChartDirector many moons ago.
Re: Is there a Perl call grapher?
by diotalevi (Canon) on Feb 12, 2007 at 16:43 UTC

    I did this once while graphing the actual calls made. I did a moving 1/10th second window of all the calls and used that to generate successive graphs with the intention of making a movie of my program's call graph and how it changed over time. Perhaps it was just the dumb way I was using GraphViz but I found that because each frame was its own .dot file, the shape of the graph could be radically different and it didn't move nicely.The video wasn't terribly nice to view.

    Added: I also remember running out of memory because the size of my graphs produced large GIFs and GD seemed to want to host the entire movie in memory while constructing it. Maybe all this would have been easier if I'd been mapping just static call graphs - I was mapping the real deal.

    ⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊

      That sounds way cool!

      What you could have done animation-wise to get GraphViz not produce random layouts every frame is to render the entire graph every frame, but color the active call differently (maybe with a fade effect for the current - 1, current - 2, etc. call).

      However, the graph would probably have been very, very big and convoluted, so it may not have been very useful anyway... :/