use Graph::Directed; my $g = Graph::Directed->new(); # Each pair is a pair of vertices qw|a b| indicating # a directed edge from a to b # graph: lineitem <-> invioce <-> claim <-> insurer $g->add_edges( qw| lineitem invoice invoice lineitem invoice claim insurer claim claim invoice claim insurer|); print "Strongly connected components: ", $g->strongly_connected_graph, "\n"; #### Strongly connected components: #### Strongly connected components: insurer+claim-lineitem+invoice