SPUG: Yet another silly question

Pommert, Daniel Daniel.Pommert at verizonwireless.com
Mon Jan 21 10:10:39 CST 2002


I have found that mkpath will check to see if the directory is there before
it tries to create it.  So, checking is not necessary when using mkpath.  

So, the code below would better be written:

#!/usr/bin/perl -w
#
$dir = "some/directory/path";
$base = "/usr/people/moonbeam";

use File::Path;

if ( ! -f "$base/$dir" ) {
    mkpath("$base/$dir", 0, 0755 ) or 
        die "Cannot make $dir/$base - $!\n";
}
else {
    print STDERR, "$base/$dir already exists as a file!\n";
}

-----Original Message-----
From: William Julien [mailto:moonbeam at catmanor.com]
Sent: Saturday, January 19, 2002 2:48 PM
To: sweetsue at sweethomes.com
Cc: spug-list at pm.org
Subject: Re: SPUG: Yet another silly question


>
>Ok, I am trying to figure out the coding for checking to see if a directory
>exists and if it doesn't, create it.  I've gotten out my "Perl For Dummies"
>book and did a lot of searching and am still stumped.  Anyone have a quick
>and easy answer for me?
>
>Thanks!
>
>Susanne Bullo - Sweet Homes
>

Maybe something like this:

#!/usr/bin/perl -w
#
$dir = "some/directory/path";
$base = "/usr/people/moonbeam";

use File::Path;

if ( ! -f "$base/$dir" ) {
    if ( ! -d "$base/$dir" ) {
        mkpath("$base/$dir", 0, 0755 ) or 
            die "Cannot make $dir/$base - $!\n";
    }
}

Here is the perldoc on File::Path:

NAME
       File::Path - create or remove directory trees

SYNOPSIS
           use File::Path;

           mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711);
           rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1);


DESCRIPTION
       The "mkpath" function provides a convenient way to create
       directories, even if your "mkdir" kernel call won't create
       more than one level of directory at a time.  "mkpath"
       takes three arguments:

       o   the name of the path to create, or a reference to a
           list of paths to create,

       o   a boolean value, which if TRUE will cause "mkpath" to
           print the name of each directory as it is created
           (defaults to FALSE), and

       o   the numeric mode to use when creating the directories
           (defaults to 0777)

       It returns a list of all directories (including intermedi-
       ates, determined using the Unix '/' separator) created.

William

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     POST TO: spug-list at pm.org       PROBLEMS: owner-spug-list at pm.org
      Subscriptions; Email to majordomo at pm.org:  ACTION  LIST  EMAIL
  Replace ACTION by subscribe or unsubscribe, EMAIL by your Email-address
 For daily traffic, use spug-list for LIST ;  for weekly, spug-list-digest
     Seattle Perl Users Group (SPUG) Home Page: http://zipcon.net/spug/


 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     POST TO: spug-list at pm.org       PROBLEMS: owner-spug-list at pm.org
      Subscriptions; Email to majordomo at pm.org:  ACTION  LIST  EMAIL
  Replace ACTION by subscribe or unsubscribe, EMAIL by your Email-address
 For daily traffic, use spug-list for LIST ;  for weekly, spug-list-digest
     Seattle Perl Users Group (SPUG) Home Page: http://zipcon.net/spug/





More information about the spug-list mailing list