Slash Boxes
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.
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

    # 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

  • Unlike my, local creates lexical variables, which means that for any subroutines we call from within that scope will see the new value, i.e. will be in the same directory.
    Hmmm. I thought it was my that created lexical variables.
    The great thing about multitasking is that several things can go wrong at once.
  • If one is at the root of the filesystem on *NIX (root of volume on OS's?) Then @CWD is the empty list. However, setting @CWD=(); leaves your process in its current location, at least on Perl 5.8.0 on Linux with File::chdir 0.06.

    This, a portable way to get to the top of the directory structure, would be a great feature and it seems that some thought has been given to implementing such a thing. There is a sub CLEAR defined in the package which sets a package variable but the directory position remains unchan

  • In all that talk about not changing the current directory for other parts of the program, $/ got stomped on heavily.

    All examples should use local $/; instead of $/ = undef;.