You say to avoid using $^O, but then recommend using File::Spec, which uses $^O to do what you said not to do.
His advice was directed at the user of the File::Spec module, not the author of the File::Spec module. If the File::Spec module is any good (as I understand it is), the end user can simply use it without knowing exactly how it works.
It's only when a module doesn't work (in the way you want it to) that you're reduced to groveling through the tedious little implementation details to fix whatever's broken.
At some point you do have to get down to brass tacks and interact with the operating system, or tell Perl how to behave for the particular operating system.
"Avoid <X>" doesn't mean "don't do <X>". It means "don't do <X> if there's another way of doing things". If there's no other way of doing things, his advice (and your criticism) doesn't apply.
In reply to Re^2: RFC: A Primer on Writing Portable Perl Programs
by Anonymous Monk