It was mostly done last night. My boss had captured some static data that I could whack at the scripts to debug them and I was able to get most everything working. I had remarkably few bugs really, mostly a couple of unlucky guesses at which of two LibXML methods was the right one, and unnecessary leading slashes on some XPath expressions. But there was a bug in the C++ cryptography object, that's apparently been there for a long tme, that I uncovered. That's code my boss tends to control - I'm WAY rusty on C++, enough that I'd probably be a danger if I messed with it much. Which meant that I couldn't complete the work.
It was a classic buffer overrun kind of thing - in a hex decoding functon the for loop was counting up by 1, not 2, as it walked the string. So it was wandering off into the hinterlands, using twice the length it should. This was determined after a couple of hours of chasing the bug down. Once found, the fix was trivial. Once that was fixed I could start flinging live transactions at the scripts. That uncovered a few more issues - the worst was the exponentiation issue I mentioned in my last entry. I spent WAY too long tracing that, and I looked right at that code many times on the process. '^' means exponent in my head - that's how I'd write it, and apparently that's what ASP and CF do as well. So I didn't catch it when porting, or debugging. Until I determiend that it was precisely that step in the math that was breaking, and I consulted the New Testament of Perl (aka Programming Perl - Learning Perl is the Old Testament) - and low, I was being a goober and not doing things The Perl Way. That was the last real bug to fix.
Since then I've been cleaning things up - I made a few improvements over the ASP/CF, and I had a few changes I wanted to make but I wanted to get things working before I did anything else. I still want to do some more commenting, etc, before this goes out, but I'll probably do that Monday. QA should also start poking at this on Monday, to make sure it really does everything it is supposed to before it goes out to a customer. I'm sure it isn't the best Perl the world has ever seen, but overall I'm satisfied. It is the first make Perl project I've done in several years, with a little over 3k lines at this point. If I add all the comments, and perhaps pod info, that I want to it'll be somewhat larger.
It looks like I'll have a little breather once this is shipped. I need to revise some of out XML Schemas that engineering produced - they're stricter than they need to be. None of the software using the data is as strict as the schemas, and it produces needless headaches to comply. Mostly enforced sequencing - it really doesn't matter what order things are in in the document, as long as the required data is there and the proper parent-child relationships are intact.
But then it looks like I'll be crunched again - PHP, which was something we saw a need for 'someday', has become a near term project. We have a customer who is dumping the Perl based shopping cart hosting system they've had to move to a new PHP based one. I've been saying I want to learn PHP (I've worked with it, but only lightly), so it looks like I'll get to tackle that job. At least I have a solid understanding of the systems after doing the Perl port.
Edit: The scripts.tar.gz if anyone wants to see.