Re: How to verify whether a directory exists

2003-12-08 Thread B. Fongo
I tried several alternatives to solve the problem, but failed. In most 
cases, the script couldn't create a directory if there is a text file 
with the same name. Rob's suggestion works better; except that it 
overrides the directory without warning - if it already existing. But it 
remians some how streng, because the content of the directory remains 
intact.

mkdir $dir || die Failed to create $dir: $!\n unless -d $dir;

It's okay anyway - as long as it's able to create a directory - even if 
a file (other than a directory) with the same name is found.

Thanks guys



Rob Dixon wrote:

Wiggins D'Anconia wrote:
 

B. Fongo wrote:
   

I want to use mkdir(blah blah, o777), but want to first find out
whether the directory blah blah exists.
I'm not if the -e option will bw right here. Let's say:
  unless (-e blah_blah) mkdir(blah_blah, 0777);
# Is this okay?
 

In general -e checks for file existence, -d checks to see if an existing
file is a directory (or complains that the file doesn't exist).
perldoc -f -e

So your above code leaves a condition, where blah_blah exists but is
*not* a directory which is likely to cause you problems. But since you
haven't told us what happens in this failure case it is hard for us to
say, but,
if (-e blah_blah) {
unless (-d blah_blah) {
die File exists but is not directory;
}
}
else {
# don't forget to check mkdir's failure
mkdir(blah_blah, 0777) or die Can't make directory: $!;
}
   

Just a note:

There's no need to do a separate -e call to check whether a directory
exists, -d won't throw an error. A simple
 die $dir is not directory unless -d $dir;

Will check that $dir both exists and is a directory, which
is probably all that is needed.
Rob



 



--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/ http://learn.perl.org/first-response



Re: How to verify whether a directory exists

2003-12-08 Thread Jeff Westman
B. Fongo [EMAIL PROTECTED] wrote:

 I tried several alternatives to solve the problem, but failed. In most 
 cases, the script couldn't create a directory if there is a text file 
 with the same name. Rob's suggestion works better; except that it 
 overrides the directory without warning - if it already existing. But it 
 remians some how streng, because the content of the directory remains 
 intact.
 
 mkdir $dir || die Failed to create $dir: $!\n unless -d $dir;
 
 It's okay anyway - as long as it's able to create a directory - even if 
 a file (other than a directory) with the same name is found.
 
 Thanks guys

The code snippet should be using 'or' instead of '|| to work properly. 
Consider if I put this snippet in a file called 'x'.  When I try to create a
directory also named 'x', it should fail, but does not tell me so:

  $ cat x
  #!/bin/perl -w
  $dir = $ARGV[0];
  mkdir $dir || die Failed to create $dir: $!\n unless -d $dir;

  $ x x
  $ echo $?
  0# success???

Now by changing '||' to 'or', we get what you'd expect:

  $ x x
  Failed to create x: File exists
  $ echo $?
  17  

# non-zero = failed, my OS is HPUX 11, dont know why I didnt get 255
(unsigned -1)

Also consider what perl sees:

Using '||':

  $ perl -MO=Deparse,-p x
  ($dir = $ARGV[0]);
  (-d($dir) or mkdir(($dir || die(Failed to create $dir: $!\n;
  x syntax OK

Using 'or':

  $ perl -MO=Deparse,-p x
  ($dir = $ARGV[0]);
  (-d($dir) or (mkdir($dir) or die(Failed to create $dir: $!\n)));
  x syntax OK


Hope that helps.

-Jeff



 Rob Dixon wrote:
 
 Wiggins D'Anconia wrote:
   
 
 B. Fongo wrote:
 
 
 I want to use mkdir(blah blah, o777), but want to first find out
 whether the directory blah blah exists.
 I'm not if the -e option will bw right here. Let's say:
 
unless (-e blah_blah) mkdir(blah_blah, 0777);
 # Is this okay?
 
 
   
 
 In general -e checks for file existence, -d checks to see if an existing
 file is a directory (or complains that the file doesn't exist).
 
 perldoc -f -e
 
 So your above code leaves a condition, where blah_blah exists but is
 *not* a directory which is likely to cause you problems. But since you
 haven't told us what happens in this failure case it is hard for us to
 say, but,
 
 if (-e blah_blah) {
  unless (-d blah_blah) {
  die File exists but is not directory;
  }
 }
 else {
  # don't forget to check mkdir's failure
  mkdir(blah_blah, 0777) or die Can't make directory: $!;
 }
 
 
 
 Just a note:
 
 There's no need to do a separate -e call to check whether a directory
 exists, -d won't throw an error. A simple
 
   die $dir is not directory unless -d $dir;
 
 Will check that $dir both exists and is a directory, which
 is probably all that is needed.
 
 Rob
 
 
 
   
 
 
 
 
 -- 
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 http://learn.perl.org/ http://learn.perl.org/first-response
 
 


__
Do you Yahoo!?
New Yahoo! Photos - easier uploading and sharing.
http://photos.yahoo.com/

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/ http://learn.perl.org/first-response




Re: How to verify whether a directory exists

2003-12-07 Thread B. Fongo
Sometimes I don't answers to my questions; so I thought it might help - 
posting to both list.
Next time, I'll remember to post to one list only.
Thanks a lot.

Wiggins d'Anconia wrote:

Please don't cross post, if your question is CGI based then use that 
list, otherwise use the other...

B. Fongo wrote:

I want to use mkdir(blah blah, o777), but want to first find out  
whether the directory blah blah exists.
I'm not if the -e option will bw right here. Let's say:

   unless (-e blah_blah) mkdir(blah_blah, 0777);
# Is this okay?

In general -e checks for file existence, -d checks to see if an 
existing file is a directory (or complains that the file doesn't exist).

perldoc -f -e

So your above code leaves a condition, where blah_blah exists but is 
*not* a directory which is likely to cause you problems. But since you 
haven't told us what happens in this failure case it is hard for us to 
say, but,

if (-e blah_blah) {
unless (-d blah_blah) {
die File exists but is not directory;
}
}
else {
# don't forget to check mkdir's failure
mkdir(blah_blah, 0777) or die Can't make directory: $!;
}
HTH,

http://danconia.org




--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/ http://learn.perl.org/first-response



Re: How to verify whether a directory exists

2003-12-07 Thread Rob Dixon

Wiggins D'Anconia wrote:

 B. Fongo wrote:
  I want to use mkdir(blah blah, o777), but want to first find out
  whether the directory blah blah exists.
  I'm not if the -e option will bw right here. Let's say:
 
 unless (-e blah_blah) mkdir(blah_blah, 0777);
  # Is this okay?
 
 

 In general -e checks for file existence, -d checks to see if an existing
 file is a directory (or complains that the file doesn't exist).

 perldoc -f -e

 So your above code leaves a condition, where blah_blah exists but is
 *not* a directory which is likely to cause you problems. But since you
 haven't told us what happens in this failure case it is hard for us to
 say, but,

 if (-e blah_blah) {
  unless (-d blah_blah) {
  die File exists but is not directory;
  }
 }
 else {
  # don't forget to check mkdir's failure
  mkdir(blah_blah, 0777) or die Can't make directory: $!;
 }

Just a note:

There's no need to do a separate -e call to check whether a directory
exists, -d won't throw an error. A simple

  die $dir is not directory unless -d $dir;

Will check that $dir both exists and is a directory, which
is probably all that is needed.

Rob



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/ http://learn.perl.org/first-response




How to verify whether a directory exists

2003-12-06 Thread B. Fongo
I want to use mkdir(blah blah, o777), but want to first find out  
whether the directory blah blah exists.
I'm not if the -e option will bw right here. Let's say:

   unless (-e blah_blah) mkdir(blah_blah, 0777);
# Is this okay?
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/ http://learn.perl.org/first-response



Re: How to verify whether a directory exists

2003-12-06 Thread Wiggins d'Anconia
Please don't cross post, if your question is CGI based then use that 
list, otherwise use the other...

B. Fongo wrote:
I want to use mkdir(blah blah, o777), but want to first find out  
whether the directory blah blah exists.
I'm not if the -e option will bw right here. Let's say:

   unless (-e blah_blah) mkdir(blah_blah, 0777);
# Is this okay?

In general -e checks for file existence, -d checks to see if an existing 
file is a directory (or complains that the file doesn't exist).

perldoc -f -e

So your above code leaves a condition, where blah_blah exists but is 
*not* a directory which is likely to cause you problems. But since you 
haven't told us what happens in this failure case it is hard for us to 
say, but,

if (-e blah_blah) {
unless (-d blah_blah) {
die File exists but is not directory;
}
}
else {
# don't forget to check mkdir's failure
mkdir(blah_blah, 0777) or die Can't make directory: $!;
}
HTH,

http://danconia.org

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/ http://learn.perl.org/first-response



Re: How to verify whether a directory exists

2003-12-06 Thread drieux
On Dec 6, 2003, at 5:27 PM, B. Fongo wrote:

I want to use mkdir(blah blah, o777), but want to first find out  
whether the directory blah blah exists.
I'm not if the -e option will bw right here. Let's say:

   unless (-e blah_blah) mkdir(blah_blah, 0777);
# Is this okay?
May I recommend File::Path and it's mkpath()
for general useage...
that having been said, you might want to check
the return condition on your mkdir().
unless ( -e $dir )
{
$dir_test = mkdir($dir, 0777);
# code to handle the failed to mkdir here
}
ciao
drieux
---

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/ http://learn.perl.org/first-response



How to verify whether a directory exists

2003-12-06 Thread B. Fongo
I want to use mkdir(blah blah, o777), but want to first find out  
whether the directory blah blah exists.
I'm not if the -e option will bw right here. Let's say:

   unless (-e blah_blah) mkdir(blah_blah, 0777);
# Is this okay?
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/ http://learn.perl.org/first-response



Re: How to verify whether a directory exists

2003-12-06 Thread Wiggins d'Anconia
Please don't cross post, if your question is CGI based then use that 
list, otherwise use the other...

B. Fongo wrote:
I want to use mkdir(blah blah, o777), but want to first find out  
whether the directory blah blah exists.
I'm not if the -e option will bw right here. Let's say:

   unless (-e blah_blah) mkdir(blah_blah, 0777);
# Is this okay?

In general -e checks for file existence, -d checks to see if an existing 
file is a directory (or complains that the file doesn't exist).

perldoc -f -e

So your above code leaves a condition, where blah_blah exists but is 
*not* a directory which is likely to cause you problems. But since you 
haven't told us what happens in this failure case it is hard for us to 
say, but,

if (-e blah_blah) {
unless (-d blah_blah) {
die File exists but is not directory;
}
}
else {
# don't forget to check mkdir's failure
mkdir(blah_blah, 0777) or die Can't make directory: $!;
}
HTH,

http://danconia.org

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/ http://learn.perl.org/first-response