I am working on this sort of thing now. The inability to directly modify structures under MLDBM is not so much of an issue as you might think. I'm very new to MLDBM, so take this with NaCl
My current idea is that one could prepare a subroutine that returns an array and use it like this...
# We want to change element 4 of array foo to '12'
$MLDBMhash{foo} = &Revise_It($MLDBMhash{foo},'4','12');
sub &Revise_It {
@somearray = @($_[0]);
$somearry[$_[1]] = $_[2];
return @somearray;
}
This is all off the top of my head. Obviously, under some conditions, you could easily have just an UpdateArray function that returned only success or failure. Depends on what you want to do. That method could quite possibly make the code more readable since at a glance anyone can see what array and which place are being updated with what value.