local $Data::Dump::Purity = 1; local(*FILE); open (FILE,"$ControlFile") or die print "Could not open control file : $ControlFile\n"; my %hash; # Parse the whole file then later on get vars based # on avaible process. while( ) { chomp($_); next, if (index($_,'#') >= 0); next, if (index($_,'!') >= 0); if ( (index($_,$process) >= 0) ) { print "$_ \n", if ($verbose); my ( $front, $back ) = split /\s*:\s*/; $front =~ s/^\*//g; my @keys = split /\*/, $front; eval( '$hash' . ( join '', map { "{'$_'}" } @keys ) . "=" . Dumper $back ); } } close FILE; return \%hash;