0

我有一个使用 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 下不需要不同的东西,我会感到惊讶。

4

1 回答 1

0

来自perldoc perlfunc

-w $文件名

unless (-w $filename) {
  say "i can't write this file";
}
于 2013-12-05T22:03:33.443 回答