The most direct translation would be to just use a temporary value to
store how far down the tree you are. Something like (untested, but
perl -c likes it):
if(defined($value)) {
chomp($value);
my $lval = $devstats->{$nic};
for(my $i = $dirCnt ; $i >= 6 ; $i--) {
$lval = $lval->{$data{$i-1}};
}
$lval->{$key} = $value;
}
Of course, that's a lot of magic numbers, so a better solution is
probably to rearrange things to be a little more semantically meaningful.
Perhaps in how the filename is assembled, and how you're passing it to
readfile(), if that's possible? If not, preprocessing
@data a little... it'll be longer, but probably clearer.