sub make_var_hash{ my $xml = @_[0]; my %myhash; my $name; my $localname; my $defaultval; # #read the xml file extract the data and add to the following hash #UPDATE sorry this line should be $myhash{$name} = [$localname,$defaultval]; #NOT $myhash{$name} = ($localname,$defaultval); #end the loop return \%myhash; } #### $hash1 = make_var_hash('MOR2305.xml'); foreach $key (keys($hash1)){ print "$key = $$hash1{$key}[0] & $$hash1{$key}[1]\n"; } #### START = MOR_START & 60 FINISH = MOR_FINISH & 150 etc.... #### sub get_suite_vars{ my %suite; my ($job_vars, $job); my @jobs = ('MOR2305.xml', 'MOP4312.xml', 'IN543.xml'); foreach $job ($job_vars){ $job_vars = make_var_hash($job); $suite{$job} = $job_vars; } return \$suite; } #### sub get_suite_vars{ my %suite; my ($job_vars, $job); my @jobs = ('MOR2305.xml', 'MOP4312.xml', 'IN543.xml'); foreach $job ($jobs){ $job_vars = make_var_hash($job); #UPDATE for anyone interested the error was here #In my original code I had foreach $key($job_vars){ #SORRY foreach $key (keys($job_vars)){ print "$key = $$job_vars{$key}[0] & $$job_vars{$key}[1]\n"; } $suite{$job}=$job_vars; } return \$suite; } #### START = MOR_START & ARRAY(0x1930fo30) = & FINISH = MOR_FINISH & ARRAY(0x1931eaf0) = & etc....