Determine write access in windows from activeperl

77 views Asked by At

I have a script written using ActivePerl that creates files where the user specifies. If the directory doesn't already exist, it uses mkpath to attempt to create it and trap any error conditions (such as not having permission to create the directory there). This seems fine. What I'm running into trouble with is determine the permissions of a directory that already exists. I don't want a user to be able to specify a protected folder that they can read from (c:\windows\system32 comes to mind) and the script silently fail attempting to create its files there.

From other perl examples on the web I've tried using the following, but I'm always given 0777 as the result for any existing directory:

use File::stat;
#
#...
#
my $info = stat($candiDirectory);
my $retMode = $info->mode;
my $mymode = sprintf("0%o, $retMode & 07777);
print "retMode for $candiDirectory is $mymode \n";

While this seems reasonable for unix/Linux, I'd be surprised if it didn't require something different under Win32 or 64.

1

There are 1 answers

2
Len Jaffe On

from perldoc perlfunc:

-w $filename

unless (-w $filename) {
  say "i can't write this file";
}