从activeperl确定windows中的写访问权限

时间:2013-12-05 21:23:33

标签: windows perl activestate directory-permissions

我有一个使用ActivePerl编写的脚本,用于创建用户指定的文件。如果目录尚不存在,则使用mkpath尝试创建它并捕获任何错误条件(例如没有在那里创建目录的权限)。这似乎很好。我遇到麻烦的是确定已存在的目录的权限。我不希望用户能够指定他们可以读取的受保护文件夹(c:\ windows \ system32),并且脚本在尝试在那里创建文件时无声地失败。

从网上的其他perl示例我尝试使用以下内容,但我总是将0777作为任何现有目录的结果:

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";

虽然这对于unix / Linux来说似乎是合理的,但如果它在Win32或64下不需要不同的东西,我会感到惊讶。

1 个答案:

答案 0 :(得分:0)

来自perldoc perlfunc

-w $ filename

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