I have tested this lightly, and
Graph::Easy seems to work - it should meet your requirements. It can "Render graphs as ASCII, HTML, SVG or Graphviz".
From the docs:
use Graph::Easy;
my $graph = Graph::Easy->new();
$graph->add_edge_once ('Bonn', 'Berlin');
print $graph->as_ascii( );
# prints:
# +------+ +--------+
# | Bonn | --> | Berlin |
# +------+ +--------+
There is a tutorial,and samples, at
the author's website.
"For every complex problem, there is a simple answer ... and it is wrong." --H.L. Mencken