http://www.perlmonks.org?node_id=1046027


in reply to Re^2: disambiguating require (or: require loves join more than catfile)
in thread disambiguating require (or: require loves join more than catfile)

Ah. Then another question: Do you expect this code to run on multiple platforms? (I'm asking because you used catfile.) In that case I'd recommend using Path::Class in favor of File::Spec because

The well-known module File::Spec also provides this service, but it's sort of awkward to use well, so people sometimes avoid it, or use it in a way that won't actually work properly on platforms significantly different than the ones they've tested their code on.

In fact, Path::Class uses File::Spec internally, wrapping all the unsightly details so you can concentrate on your application code. Whereas File::Spec provides functions for some common path manipulations, Path::Class provides an object-oriented model of the world of path specifications and their underlying semantics. File::Spec doesn't create any objects, and its classes represent the different ways in which paths must be manipulated on various platforms (not a very intuitive concept). Path::Class creates objects representing files and directories, and provides methods that relate them to each other.

-- from http://search.cpan.org/~kwilliams/Path-Class-0.32/README.pod

Recommended reading: http://www.perladvent.org/2012/2012-12-01.html

  • Comment on Re^3: disambiguating require (or: require loves join more than catfile)