#!/usr/bin/perl use warnings 'all'; use strict; use Graph::Undirected; use Graph::Writer::Dot; my @areas = qw( America Britain Chile ); my @verts = qw( Phone_Company Cellular_Networks Government Internet Rural_Users ); my %graph; # Hash of Graph::Undirected objects. foreach my $area (@areas) { $graph{$area} = Graph::Undirected->new(); $graph{$area}->add_vertex($_) foreach @verts; } $graph{America}->add_edge(@verts[0,1]); $graph{America}->add_edge(@verts[1,2]); $graph{America}->add_edge(@verts[3,0]); $graph{America}->add_edge('Government', 'Internet'); $graph{Britain}->add_edge(@verts[0,2]); $graph{Britain}->add_edge(@verts[1,2]); $graph{Britain}->add_edge(@verts[3,2]); for ($graph{Chile}) { $_->add_edge(@verts[0,1]); $_->add_edge(@verts[0,2]); $_->add_edge(@verts[0,3]); $_->add_edge(@verts[1,2]); $_->add_edge(@verts[1,3]); $_->add_edge(@verts[2,3]); } my $writer = Graph::Writer::Dot->new(); foreach my $area (@areas) { $writer->write_graph($graph{$area}, "$area.dot"); }