package Domain; sub load { ... } sub getAddress { ... } #etc. 1 #### package DomainManager; sub install { my ($this, $domain) = @_; # create user # create files # create db # set up apache # etc return @results; } sub uninstall { my ($this, $domain) = @_; # remove user # remove files # remove db # remove apache config # etc return @results; } 1 #### package DomainManagerOutput; sub new { ... } sub isError { ... } sub getText { ... } 1 #### #!/usr/bin/perl -T use strict; use warnings; use Domain; use DomainManager; # Do authentication, authorization, etc. my $domain = Domain->load(...); my @results = DomainManager->install($domain); print "Content-type: text/html\n\n"; print ""; for (@results) { if ($_->isError) { print "
" . $_->getText . "
"; } else { print "
" . $_->getText . "
"; } } print ""; ----------------------------------------------------------- #!/usr/bin/perl use strict; use warnings; use Domain; use DomainManager; # Parse command line, etc. my $domain = Domain->load(...); my @results = DomainManager->install($domain); for (@results) { if ($_->isError) { print "[ERROR]" . $_->getText . "\n"; } else { print "[ OK ]" . $_->getText . "\n"; } }