可File::Find::Rule
用于确定给定 UID 是否可写入目录?
我使用了以下测试:
my $uid = 123; # or whatever...
my @subDirs = File::Find::Rule->permissions(isWriteable => 1, user => "$uid")->directory()->maxdepth(1)->in( $dir );
if (scalar @subDirs == 0) {
die "$dir is not writeable...";
}
die "$dir is writeable";
但它总是返回$dir
是可写的,即使对于我知道受限制的测试目录也是如此。
我可以对此测试进行哪些调整以使其正常工作?
编辑
使用use File::Find::Rule qw(permissions)
导致脚本崩溃。我从来不需要permissions()
在旧File::Find::Rule
操作中使用以前的用法来指定此选项。
如果我按如下方式调整规则,我就会让事情正常进行。
在这里,我正在测试子目录列表中是否存在父目录:
my @subDirs = File::Find::Rule::Permissions->directory()->permissions(isWriteable => 1, user => "$uid")->maxdepth(1)->name(".")->in("$dir");
子目录的父目录$dir
是.
如果该目录存在于 的列表中@subDirs
,则它必须是可写的。
感谢 ikegami 推荐这个模块。