Now, that may not be the best way, but I'd vote for it as easiest. :-)

Two comments.

First, File::chdir uses Cwd and File::Spec internally, which means it's potentially just as subject to the issues raised in the meditation. The Anonymous Monk was suggesting opening and saving the filehandle, not the directory name. That's quite a bit different and would be more robust to name issues. However, the meditation was about comparing the current directory to a desired one -- which in a test suite is specified by name, not filehandle, so that doesn't really help either.

Second, my hope is that people may find File::pushd to be even easier -- at least for the directory reverting part. Here's something like your first example with File::pushd -- no localization needed:

use Cwd; use File::pushd; print cwd; { my $dir = pushd('subdir'); print join("\n", glob '*'); } # back where we started print cwd; print join("\n", glob '*');

And a File::pushd version like your second example -- with no needing to manually change back to a saved directory:

use File::pushd; { my $wd = pushd(); chdir('subdir'); # do some work. } # automatically back in original dir

Where it really shines is with temporary directories that need to clean themselves up:

use File::pushd; { my $wd = tempd(); # do work in the temporary directory } # back in the original directory and the temporary directory is delete +d

-xdg

Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.


In reply to Re^3: Testing the current directory with Cwd and File::Spec by xdg
in thread Testing the current directory with Cwd and File::Spec by xdg

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.