I have a love/hate relationship with File::Spec. Its existence is a great thing, and everyone should use it or something like it. But its interface was never really designed, it was sort of extracted from some code in ExtUtils::MakeMaker. It's actually fairly difficult to write code that uses File::Spec for anything complicated on multiple platforms, though.
I maintain File::Spec because it's an absolutely essential part of Perl's toolkit. I created Path::Class because I think we can probably do better than File::Spec.
I love File::Spec. I couldn't operate without it. I've forgotten what directory seperator my file sytem uses. I redirect my cron jobs to `perl -MFile::Spec -e 'print File::Spec->devnull()'`. Well, not really, but I do like the module a lot.