Re: How to verify whether a directory exists
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
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
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
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
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
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
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
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
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