in reply to Iterating over a hash, recursively, forever!
I thought I'd exhausted all of Perl's built-in documentation in my quest, but that wasn't the case.
After I rethought my approach to the problem, MJD's oh-so-excellent perlreftut was exactly what I needed.
Thanks to Roy Johnson and Roger for making me realize I needed to rethink.
Here's an excerpt (I know, the code's pitiful. I'm still a newbie.) of what I wound up with:
This produces an (admittedly, not the most pretty) indented org chart of sorts, with the name of each department listed as the respective department head is encountered.# populate the boss's part of the orgchart with employee numbers that + report to him/her while (my ($loccode, $empnum, $bossnum, $name, $area) = $sth->fetchrow +_array) { $boss{$empnum} = $bossnum; $name{$empnum} = $name; $area{$empnum} = $area; $loccode{$empnum} = $loccode; push @{$chart{$bossnum}}, $empnum; } # later, while working through the orgchart sub printreports { my $number = shift(@_); my $indent = shift(@_)." "; return unless defined @{$chart{$number}}; print "$indent$loccode{$number} $area{$number}:\n$indent*$name{ +$number} $number\n"; my @reports = @{$chart{$number}}; foreach my $peon (@reports) { next if $number == $peon; print "$indent$name{$peon} $peon $loccode{$number}\n"; printreports($peon, $indent) if $depth eq "recursive"; } }
Again, it ain't pretty, but it beats the snot out of the total lack of documentation we had before.
Oh, and Derby: You're right, you're too cynical. This wasn't homework, it was live data from a Kronos database on an iSeries 830. Maybe next time, you should expend effort on a question that you feel isn't homework.
|
|---|