in reply to AoHoAoH... am I delusional?

Assuming your problem is with the ugliness of the structure, and complexity of data entry, YAML may help.

Here is code that reverses what your code does:

use strict; use warnings; use YAML; use Data::Dumper; my $stuff = <<YAML; --- Baked Goods: - Cookies: - Chocolate Chip - Oreo Fruits: - Apples: - Fuji - Granny Smith - Oranges: - Tangerine - Navel YAML my $perl_structure = Load $stuff; print Dumper \$perl_structure;
this prints:
$VAR1 = \{ 'Baked Goods' => [ { 'Cookies' => [ 'Chocolate Chip', 'Oreo' ] } ], 'Fruits' => [ { 'Apples' => [ 'Fuji', 'Granny Smith' ] }, { 'Oranges' => [ 'Tangerine', 'Navel' ] } ] };
Update: You can use recursive printing to step through the structure, such as the code below:
printit ($perl_structure); sub printit{ my $this = shift; if (ref $this eq ""){ print " $this "; return; } for my $k (keys %$this){ print "$k\t:"; printit($_) for @{$this->{$k}}; print "\n"; } print "\n"; }

            “PHP is a minor evil perpetrated and created by incompetent amateurs, whereas Perl is a great and insidious evil perpetrated by skilled but perverted professionals.”
        ― Jon Ribbens