my $iter = StructIterator->new ( struct => $my_struct, ); while ( $iter->next ) { my $value = $iter->yield; my $hash_key_or_array_index = $iter->index; my $current_depth = $iter->level; ## ... }