My general rule of thumb is to use forward slashes wherever you can get away with it, and use OS-specific separators only when testing shows that they're required. Be ready to accept the OS-specific separators or the forward slashes whenever the user supplies them.
I just tried this test on Windows with Perl 5.6.0. It shows that File::Basename accepts forward or backslashes on Windows. This is not a thorough test on all platforms and versions.
use File::Basename qw(basename dirname);
print basename("c:\\path\\file.txt"), $/;
print basename("c:/path/file.txt"), $/;
print dirname("c:\\path\\file.txt"), $/;
print dirname("c:/path/file.txt"), $/;
__OUTPUT__
file.txt
file.txt
c:\path
c:/path
"Be lenient in what you accept, strict in what you produce."
-- [ e d @ h a l l e y . c c ] |