use strict; my $inv870 = new Job("INV870","perl INV870.pl","172.**.***.**",sub{ #dosomething after the job }); my $suite = new Suite('AMREPS',[$inv870]); print $suite->xml; package Job; sub new { my $class = shift; my $name = shift; my $command = shift; my $location = shift; my $afterhook= shift; my $data = {UNIQUENAME => $name, COMMAND_LINE => $command, LOCATION => $location, HOOK => $afterhook}; my $self = bless $data, $class; return $self; } 1; package Suite; use XML::Simple; sub new { my $class = shift; my $name = shift; my $jobarray = shift; my $data = {UNIQUENAME => $name, JOBS => $jobarray}; my $self = bless $data, $class; return $self; } sub xml{ my $class = shift; return XMLout($class); } 1;