#!/usr/bin/env perl use strict; use warnings; use DBI; use GraphViz; use Tree::DAG_Node::Persist; # ------------------------------------------------ sub process_node { my($node, $opt) = @_; my($mother) = $node -> mother; my($node_name) = $node -> name; if ($mother) { my($mothers_name) = $mother -> name; $$opt{graph} -> add_edge($mothers_name => $node_name); } return 1; } # End of process_node. # ------------------------------------------------ my($dbh) = DBI -> connect($ENV{DBI_DSN}, $ENV{DBI_USER}, $ENV{DBI_PASS}); my($driver) = Tree::DAG_Node::Persist -> new ( context => 'HTML::YUI3::Menu', dbh => $dbh, table_name => 'items', ); my($tree) = $driver -> read; my($graph) = GraphViz -> new(name => 'HTMLYUI3Menu'); my($opt) = { callback => \&process_node, _depth => 0, graph => $graph, }; $tree -> walk_down($opt); print $graph -> as_svg;