Perl未检测到现有文件夹,文件夹已经存在,但仍未检测到。
下面是简单的代码
my $dir = '/net/prihpwnfs02';
if (-e $dir and -d $dir) {print "GOOD :)\n";} else {print "BAD :(\n";}
答案 0 :(得分:1)
您没有检查遇到什么错误。
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";
消息“ 对于定义的数据类型而言值太大”与错误EOVERFLOW
相关联。 stat
(2)手册页定义了何时返回此错误。在我的系统上,它显示以下内容:
[自变量]是指一个文件,其大小,索引节点号或块数不能分别用
off_t
,ino_t
或blkcnt_t
类型表示。例如,当在没有-D_FILE_OFFSET_BITS=64
的32位平台上编译的应用程序调用大小超过stat()
字节的文件上的(1<<31)-1
时,就会发生此错误。
简而言之,您正在使用一个过时的Perl版本正赶上您。
答案 1 :(得分:0)
我不知道您要做什么,因为您没有询问实际问题,但是如果您要检查文件夹是否存在,则可以使用以下代码:
#!/usr/bin/perl -w
use strict;
my $dir = '/net/prihpwnfs02';
if (-d $dir) {
print "$dir exists";
} else {
print "$dir does not exist";
}
让我知道是否有帮助!