There's not anything 'wrong' with it (i.e. it works), but now, in addition to 3 calls to FETCH for every key, there are also calls to FIRSTKEY and NEXTKEY, so the number of calls increases, and it's marginally slower.
Basically, if there are 3 named buffers (and in the real-life module, there's usually a lot more than that), there have to be 3 calls to FETCH, but by doing the work at the level of my module, it is constantly doing a FETCH and returning to my module, then calling FETCH again, over and over.
I want to have a Tie::Hash method which will return the entire hash. Then there will be only a single call to a Tie::Hash::NamedCapture routine (which will then call all of the FETCH'es internally, but since this is all c code, it should be a lot faster).
Unfortunately, I'm fairly certain it doesn't exist at this point, so I'm just experimenting with ways to speed up what I've got.