Perl目录相当于-e

Perl目录相当于-e,perl,directory,file-type,stat,Perl,Directory,File Type,Stat,是否有一个目录存在? 因为我没有在电视上看到 或者,最好的测试方法是什么 -e File exists. 我试图避免使用opendir和grep来查找dirname,因为这似乎有些过分 更新问题: perl不支持$dir/在进行-e或-d检查之前,是否使用dirname 使用-d测试查看给定路径是否为目录。在这种情况下,-e也将返回true,因为这将测试某个文件系统对象是否存在 要查看路径是否指向无目录、无符号链接、无特殊文件的普通文件,请使用-f 所以你想要: next unless (-

是否有一个目录存在? 因为我没有在电视上看到

或者,最好的测试方法是什么

-e  File exists.
我试图避免使用opendir和grep来查找dirname,因为这似乎有些过分

更新问题: perl不支持$dir/在进行-e或-d检查之前,是否使用dirname

使用-d测试查看给定路径是否为目录。在这种情况下,-e也将返回true,因为这将测试某个文件系统对象是否存在

要查看路径是否指向无目录、无符号链接、无特殊文件的普通文件,请使用-f

所以你想要:

next unless (-e $dir . "/dirname");             -e only for file so doesnt work

-d标志是您正在寻找的,您可能还想阅读perldoc-f-X。您似乎感到困惑-e告诉你它的论点是否存在;它不会询问它的inode类型。@tchrist您是对的。我很困惑,因为Perl使用了单词File,我自动地认为它只是一个文件,即不等同于dir。如果-d起作用,-e应该起作用。这两种方法都不适合我调试。根据perlop手册,这只是一个简单的优先问题。另外,您可以随时询问:perl-MO=Deparse,-p-e'print-d$dir。“东西”上面写着print-d$dir我知道-e对于类Unix和类Windows系统上的目录是正确的,但它对所有平台都有保证吗?我强烈怀疑这一点,并且在perlport中找不到其他说明。不要引用我的话。但是,我的意思是,-e还会是什么?我关心的是,IIRC,在虚拟机上有一个模糊的例子,相同的名称可以引用目录或文件,我记不起细节。如果目录存在而文件不存在,-e应该怎么做,反之亦然?并非所有系统都必须将目录和文件放在同一名称空间中。我没有使用VM的经验,但是如果-f或-d或-l symlink或任何其他情况,则-e应该返回true。名称空间不应改变这一点。如果有疑问,请运行一个测试用例。只有当文件和目录位于同一命名空间中时,-e才有意义。碰巧它们在大多数现代系统上。
-d "$dir/dirname" or next;