Just a thought: I think that perl can be compiled to use your system's printf function, or its own internal one. Perhaps your old version was compiled to use your system printf, which recognized %lf (perhaps as an alternative to %Lf, which is a long double), and the new version uses perl's printf, which doesn't allow this.