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

(I know that I can use readdir for that. But I seek more elegant way.)

UPD: to make it more clear, I need to get full correct-cased path.

Like that: '../../foo/bar/baz' -> '../../Foo/BaR/bAZ'

(I can write a module for that using readdir, but I think there is a way to do so that without directory traversing.)

  • Comment on [Windows] Given lower-cased file name, how to get actual file name (stored on filesystem) ?

Replies are listed 'Best First'.
Re: [Windows] Given lower-cased file name, how to get actual file name (stored on filesystem) ?
by Corion (Patriarch) on Oct 22, 2012 at 12:54 UTC
      Thanks! That's exactly what I needed;
Re: [Windows] Given lower-cased file name, how to get actual file name (stored on filesystem) ?
by Anonymous Monk on Oct 22, 2012 at 12:52 UTC

      How does the linked module address the problem? I fail to see documentation for "case-correction" in its documentation, unless you intend it to be a fancy wrapper around readdir.

        Eh?
        $ md tmpblah $ echo > tmpblah\aone.pl $ echo > tmpblah\bOne.pl $ echo > tmpblah\cONe.pl $ echo > tmpblah\dONE.pl $ perl -MPath::Class::Rule -le "print for Path::Class::Rule->new->file +->iname(qr/.one.pl/)->all(q/tmpblah/) " tmpblah\aone.pl tmpblah\bOne.pl tmpblah\cONe.pl tmpblah\dONE.pl