Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • This doesn't work too well if your platform doesn't use "/" for a path separator. For example, if you're using Windows, you should use "\"

    At least on Win32 with ActiveState ActivePerl, chdir('/some/where') works fine. About the only place on Win32 that / doesn't work mix-and-match with \ separators is in the File Open / Save Dialog (and a few other 16-bit hold over system calls; it depends on which file-open API a program uses whether it can accept /path/file args on its commandline; most prefer the ne

    --
    Bill
    # I had a sig when sigs were cool
    use Sig;
    • About the only place on Win32 that / doesn't work mix-and-match with \ separators ...

      Plus anytime you use File::Spec with several other modules that require a '/' path delimiter. In fact can anyone who writes module for CPAN, please remember that File::Spec and File::Find are ONLY compatible on Unix like systems. There have been several modules that have failed CPAN testing because of it.

      • I'm not sure I understand you here Barbie. Are you saying that I shouldn't use File::Spec because some other modules require '/' as a path seperator? Surely it's *those* modules that are broken, not my use of File::Spec.

        Can you give us some examples of modules that use '/' as path seperators?

        • File::Spec and File::Find are the most common examples where misunderstandings arise, they most likely happen elsewhere. It's not so much that you can't use them together, it's the fact that care must be taken if your code is to be used on platforms other than Unix style OSs.

          Say for example you use File::Find to find a list of files, you then store them in a hash as keys. Later you use File::Spec to build a file path, and verify whether the file exists in the hash. On Windows the file will never be found in the hash, as the string comparison of '/' and '\' are different. This is why merlyn [perl.org]'s mini-cpan mirror script [stonehenge.com] fails as is on Windows. A minor fix [perl.org] and it works.

          Another failing is when people use File::Spec with a file obtained via a web form. File::Spec will work as if the file came from the operating system the server is on. Submit a file from Windows or a Mac onto a Linux box and use File::Spec to disassemble the filename. It won't work as you might expect, as '/' won't be in the path.

          As such it is how you *use* File::Spec that is the key, not the module or any other.