The perror() on Borland C++ 5.0 for Windows does this:
void perror( char *msg ) {
   fprintf( stderr, "%s: %i\n", msg, errno );
My, my, I couldn't stop laughing when I saw this. Doesn't that kind of defeat the purpose of perror()? It's supposed to be a descriptive string, not just an error code!

Of course, it is a Windows compiler, so perror() is far less important.