use strict; use warnings; use GraphViz; my $g = GraphViz->new(node => {fontsize => 10}, edge => {fontsize => 9}, rankdir => 'LR'); $g->add_node('email', label => "Email App:\nperiodic DB query\nto send emails", shape => 'box'); $g->add_node('report', label => "periodic financial\nstatement"); $g->add_node('cond', label => "amount\nowed", shape => 'Mdiamond'); $g->add_node('msgS', label => "very frightening\nmessage"); $g->add_node('msgM', label => "extremely frightening\nmessage with\nrandom death threat"); $g->add_node('msgL', label => "very frightening\nmessage without\ndeath threat"); $g->add_node('thankC', label => "thank you\nfor your business"); $g->add_node('thankD', label => "thank you\nfor your payment"); $g->add_edge('email' => 'report', label => 'creditor/collector'); $g->add_edge('email' => 'cond', label => 'debtor'); $g->add_edge('cond' => 'msgS', label => 'small'); $g->add_edge('cond' => 'msgM', label => 'medium'); $g->add_edge('cond' => 'msgL', label => 'large'); $g->add_edge('email' => 'thankC', label => 'creditor/collector'); $g->add_edge('email' => 'thankD', label => 'debtor'); $g->as_jpeg("email01.jpg");