GraphViz2::Parse::ISA can visualize N Perl class hierarchies as a graph.

I used the code from the synopsys on the files that come with the distribution:

Installed the module:

cpanm GraphViz2::Parse::ISA

Then also downloaded the source separately and unzipped it.

wget https://cpan.metacpan.org/authors/id/E/ET/ETJ/GraphViz2-Parse-ISA-2.52.tar.gz
tar xzf GraphViz2-Parse-ISA-2.52.tar.gz
cd GraphViz2-Parse-ISA-2.52

Then created a file which was a copy of the code from the synopsis in the documentation of GraphViz2::Parse::ISA.

It did not work out of the box, but after I made some small changes (commented out 2 lines and added one on line 28) it generated a file called parse.code.svg based on the files in the t/lib directory of the zip file.

examples/graphviz2_parse_isa_example.pl

#!/usr/bin/env perl
 
use strict;
use warnings;
 
use File::Spec;
 
use GraphViz2;
use GraphViz2::Parse::ISA;
 
my($graph) = GraphViz2 -> new
        (
         edge   => {color => 'grey'},
         global => {directed => 1},
         graph  => {rankdir => 'BT'},
         node   => {color => 'blue', shape => 'Mrecord'},
        );
my($parser) = GraphViz2::Parse::ISA -> new(graph => $graph);
 
unshift @INC, 't/lib';
 
$parser -> add(class => 'Adult::Child::Grandchild', ignore => []);
#$parser -> add(class => 'Hybrid', ignore => []);
$parser -> generate_graph;
 
my($format)      = shift || 'svg';
#my($output_file) = shift || File::Spec -> catfile('html', "parse.code.$format");
my($output_file) = shift || "parse.code.$format";
 
$graph -> run(format => $format, output_file => $output_file);

More examples on the Graphviz Perl web site