Several reasons.
- Schwern has his hands full these days and non-essential stuff is getting (appropriately) put on the back burner. (I say this based on email exchanges with him after I identified a possible off-by-one bug in Sub::Uplevel some weeks ago).
- File::pushd uses a different interface that doesn't rely on manipulating automatically-exported, tied, global variables. (Aren't those anti-patterns? Shouldn't we be discouraging their use?) From that perspective, I'd argue my module brings something new to the table rather than just being a fix to an old module.
- The broken functionality in File::chdir has to do with using @CWD to represent separated components of a directory and changing directories by pushing/popping the array. This breaks on Win32 due to the existence of the volume (e.g. C:\ ). It wasn't just broken -- it was never written to be portable in the first place. None of this functionality was relevant to what I needed, but it meant the module wasn't available via PPM, which I try to stick with for my Win32 perl. It was faster to code up and release a more narrowly targeted module (including a test suite) than to unravel getting the right behavior in File::chdir. (Which I did pull down and examine to see if I could manage a quick fix before I even started.)
I think your standards on your home node about "needless reimplementation" are needlessly high.
-xdg
Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.