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

ddd has asked for the wisdom of the Perl Monks concerning the following question:

After a recent project that used File::Spec, File::Find, and others I'd like to add another section to tye's File::Spec review ('the good', 'the bad', and 'the ugly') ...

(Please forgive me for using unix paths in the following discussion)

The Unexpected

File::Spec->canonpath( $path ); does remove extra '/' and '/.' from paths, but it does not, however, fix paths like '/a/1/../2' into '/a/2'.

To do that I had to resort to regexps something like $path =~ s(\.\./)()g - which introduces platform-specific code and defeats the purpose of using File::Spec in the first place.

Q: What is the correct (x platform) method for removing 'dir/..' from paths?

A note on my ignorance: None of the systems that I use perl on (all 5.005_003 or older) have documentation (or code) for either abs2rel() or rel2abs() in File::Spec, or File::Spec::Unix. Are these new in 5.6? Perhaps theses functions are part of the answer to my question.

All the best,
DouglasDD