首页 > 解决方案 > Perl 无法识别文件夹

问题描述

Perl 没有检测到现有文件夹,文件夹已经存在但它仍然没有检测到。

下面给出的是简单的代码

my $dir = '/net/prihpwnfs02';
if (-e $dir and -d $dir) {print "GOOD :)\n";} else {print "BAD :(\n";}

标签: perl

解决方案


你没有检查你得到了什么错误。

my $dir_qfn = '/net/prihpwnfs02';
defined( my $is_dir = -d $dir_qfn )
   or die("Can't stat \"$dir_qfn\": $!\n");

print $is_dir ? "GOOD :)\n" : "BAD :(\n";

或者

my $dir_qfn = '/net/prihpwnfs02';
stat($dir_qfn)
   or die("Can't stat \"$dir_qfn\": $!\n");

print -d _ ? "GOOD :)\n" : "BAD :(\n";

如果你不想死,如果它不存在,

my $dir_qfn = '/net/prihpwnfs02';
stat($dir_qfn)
   or $!{ENOENT} or die("Can't stat \"$dir_qfn\": $!\n");

print -d _ ? "GOOD :)\n" : "BAD :(\n";

消息“ Value too large for defined data type ”与错误相关联EOVERFLOW。( stat2) 手册页定义了它何时返回此错误。在我的系统上,它显示以下内容:

[参数] 指的是一个文件,其大小、inode 数或块数不能分别用类型off_tino_t或表示blkcnt_t。例如,当在 32 位平台上编译的应用程序没有-D_FILE_OFFSET_BITS=64调用stat()大小超过(1<<31)-1字节的文件时,可能会发生此错误。

简而言之,您使用的是过时的 Perl 版本这一事实正在追赶您。


推荐阅读