Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl:如何区分文件不存在还是我不存在';我没有访问该路径的权限_Perl_Unix - Fatal编程技术网

perl:如何区分文件不存在还是我不存在';我没有访问该路径的权限

perl:如何区分文件不存在还是我不存在';我没有访问该路径的权限,perl,unix,Perl,Unix,我需要在unix环境中使用Perl测试文件系统上是否存在文件/目录。我尝试使用文件test-e,但这并不能区分 文件/目录不存在 您没有在父文件夹中读取的权限 我可以查一下美元里有什么?变量并搜索“Permission denied”,但这听起来不是正确的做法 有什么建议吗 非常感谢-e只是对stat的调用,与其他系统调用一样,它设置$和%当它返回false时 if (-e $qfn) { print "ok\n"; } elsif ($!{ENOENT}) { print

我需要在unix环境中使用Perl测试文件系统上是否存在文件/目录。我尝试使用文件test-e,但这并不能区分

  • 文件/目录不存在
  • 您没有在父文件夹中读取的权限
我可以查一下美元里有什么?变量并搜索“Permission denied”,但这听起来不是正确的做法

有什么建议吗


非常感谢

-e
只是对
stat
的调用,与其他系统调用一样,它设置
$
%当它返回false时

if (-e $qfn) {
    print "ok\n";
}
elsif ($!{ENOENT}) {
    print "Doesn't exist\n";
}
else {
    die $!;
}
比如说,

$ mkdir foo

$ touch foo/file

$ chmod 0 foo

$ perl x.pl foo/file
Permission denied at x.pl line 10.

$ perl x.pl bar/file
Doesn't exist

$ perl x.pl x.pl
ok

如果你没有读取权限,它实际上是不存在的。我知道这些文件存在,有人将它们添加到“要查看”的文件列表中。现在我看不懂了。重要的是,我可以区分“它肯定不再存在”和“它可能仍然存在,我没有权限检查”。
EACCES
权限被拒绝谢谢!我不知道%!。我会调查的。