in reply to split and the null string

I agree with you there, I remember working on a script some years ago and this biting me in the ass. In particular, note the difference between split /:/, "A", -1 (1 field) and split /:/, "", -1 (0 fields).

So, you can consider it a bug — or a bad design desicion. Or, you can feel that this is the proper way to behave. I'm no sure either way. It most definitely is a corner case, and if you want it, it's best to treat a zero length string as a special case, returning (""), and have any other string be delt with by split.