How about cout? cerr? errno? stdout?
I'm not just bringing these up to be a smartass -- I really do think there are legitimate times to use globals. But they're very, very rare.
Fair questions. I very rarely use cout or cerr, and never the standard streams anymore. I could argue that the ones you mention are in place as a bridge, but in the end you're right: my statement was too sweeping. I'll amend it to "I haven't written code to generate a single byte of global data in nearly twenty years."
It's difficult in modern languages to even create global data in a way that mimics the situation back when I first learned what the term meant. Pretty much everything exists in a scope narrower than a truly global scope, and should.
Parting word: This post might make me seem pro-global if taken out of context. I am still firmly anti-global -- you can all breathe again.
I had no doubts, and was breathing the whole time.