use Graph::Easy; my $graph = Graph::Easy->new(); my @nodes=('b:a','c:a','d:b','e:c','f:c'); my ($child,$parent); # build the graph foreach my $node (@nodes) { ($child,$parent) = split(":",$node); $graph->add_edge($parent,$child); } # print the graph print $graph->as_asciii(); #### # save the graph by saving the list of original nodes open($filehandle,"<","nodes.dat") or die("Can't open file 'nodes.dat' for writing: $!\n"); print $filehandle join("\n",@nodes);