note
VinsWorldcom
<p>How about [cpan://Graph::Easy]?</p>
<c>
use Graph::Easy;
my $graph = Graph::Easy->new();
# I think I got all the edges added below?
$graph->add_edge(1,2);
$graph->add_edge(2,5);
$graph->add_edge(5,6);
$graph->add_edge(6,7);
$graph->add_edge(7,8);
$graph->add_edge(8,9);
$graph->add_edge(9,11);
$graph->add_edge(8,10);
$graph->add_edge(10,11);
$graph->add_edge(1,4);
$graph->add_edge(4,5);
$graph->add_edge(1,3);
$graph->add_edge(3,5);
$graph->add_edge(1,7);
print $graph->as_ascii;
</c>
<p>Output:</p>
<c>
+-----------------------------+
| |
| |
| +-------------------+-------------------+
| | v v
+---+ +---+ +---+ +---+ +---+ +---+ +---+ +----+ +----+
| 4 | <-- | | --> | 2 | --> | 5 | --> | 6 | --> | 7 | --> | 8 | --> | 10 | --> | 11 |
+---+ | | +---+ +---+ +---+ +---+ +---+ +----+ +----+
| | ^ ^ | ^
| 1 | ------+ | | |
| | | v |
| | | +---+ |
| | | | 9 | -----------------+
+---+ | +---+
| |
| |
v |
+---+ |
| 3 | ----------------+
+---+
</c>
<p><B>UPDATE:</b> Note [cpan://Graph::Easy] only *displays* graphs, it doesn't analyze them. To do graph analysis, you'll need [cpan://Graph]. Of course they use different object constructions, but fear not, [cpan://Graph::Convert] converts wonderfully between the two, so you can create, analyze and display graphs with these three modules ([cpan://Graph], [cpan://Graph::Easy], [cpan://Graph::Convert]) and they all depend on core modules - so no dependency spiral.</p>
1209007
1209007