my %inputdata = (
'Config->{blah}->{hat}' => "splat",
'Config->{cat}->[0]' => "doh",
'Config->{cat}->[1]' => "ray",
);
####
my $evaltext;
foreach my $key (keys %inputdata) {
$evaltext .= "\$$key = qq~$inputdata{$key}~;\n";
}#foreach
eval $evaltext;
####
foreach my $key (keys %inputdata) {
my @keys = split(/->/, $key);
# if ($#keys == 0) {
# ${$keys[0]} = $inputdata{$key};
# }#if
if ($#keys == 1) {
if ($keys[1] =~ /\{/) {
$keys[1] =~ s/(\{|\})//g;
${$keys[0]}->{$keys[1]} = $inputdata{$key};
}#if
if ($keys[1] =~ /\[/) {
$keys[1] =~ s/(\[|\])//g;
${$keys[0]}->[$keys[1]] = $inputdata{$key};
}#if
}#if
if ($#keys == 2) {
if ($keys[1] =~ /\{/) {
$keys[1] =~ s/(\{|\})//g;
if ($keys[2] =~ /\{/) {
$keys[2] =~ s/(\{|\})//g;
${$keys[0]}->{$keys[1]}->{$keys[2]} = $inputdata{$key};
}#if
if ($keys[2] =~ /\[/) {
$keys[2] =~ s/(\[|\])//g;
${$keys[0]}->{$keys[1]}->[$keys[2]] = $inputdata{$key};
}#if
}#if
if ($keys[1] =~ /\[/) {
$keys[1] =~ s/(\[|\])//g;
if ($keys[2] =~ /\{/) {
$keys[2] =~ s/(\{|\})//g;
${$keys[0]}->[$keys[1]]->{$keys[2]} = $inputdata{$key};
}#if
if ($keys[2] =~ /\[/) {
$keys[2] =~ s/(\[|\])//g;
${$keys[0]}->[$keys[1]]->[$keys[2]] = $inputdata{$key};
}#if
}#if
}#if
}#foreach