##
sub traverse {
my ($deps, $root, $depth) = @_;
print " " x $depth, "$root\n";
traverse($deps, $_, $depth + 1)
for @{ $deps->{$root} };
}
traverse( \%deps, "mainpackage-1.0" );
####
mainpackage-1.0
dependency1-1.3
dep1_of_dep1
dependency2-2.3
dep1_of_dep2
dep2_of_dep2
dep3_of_dep3
dependency3