我有一个 perl 脚本,它将对目录执行一些操作,我只等待它在当前用户(例如执行脚本的用户)拥有所有权的目录上运行。
我尝试了以下方法:
...
my $user = getlogin();
opendir(HANDLE, $path) or die ("No such directory: $path");
foreach my $directory (readdir HANDLE)
{
opendir(WORKING_DIR_HANDLE, "$path/$directory") or die ("!!!!!!!");
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat(WORKING_DIR_HANDLE);
my $owner = getpwuid($uid);
if( $owner eq $user )
{
...
}
}
...
该代码在大多数情况下都有效。但是,对 stat() 的调用会返回未定义的值。根据 perl 文档,我认为我正确地调用了 stat() :
* stat FILEHANDLE
* stat EXPR
* stat DIRHANDLE
* stat
Returns a 13-element list giving the status info for a file, either the file opened via
FILEHANDLE or DIRHANDLE, or named by EXPR. If EXPR is omitted, it stats $_ . Returns the
empty list if stat fails. Typically used as follows:
我也尝试过使用文件名将 EXPR 传递给它,我得到了相同的结果。我只是错过了一些明显的东西吗?还是有其他方法可以做到这一点?我更喜欢不需要安装第三方 perl 模块的解决方案。