Whenever I've started to make "replacement for &foo" things, I've found it helpful to ask myself "why would people choose to use my replacement than the original &foo?"
99 out of 100, it's been "I guess they wouldn't.", and the hundredth time was because of some data validation I was performing on $bar before it was transformed by &foo, so I doubt it could even be called a replacement, but probably more of a wrapper. Asking this question of myself has saved me from writing some (potentially) bad code.
In fact, I see that in the heart of your code lies this :
$Inp=~s/%([\d.-]*)([smhDMYy])/sprintf("%$1d",eval "\$$2")/ge;
So this really isn't a replacement for sprintf, but an enhancement thereof.
Also, in addition to
Kanji's suggestion of
POSIX, there's also the (to borrow a phrase) the all-singing, all-dancing
Date::Manip.