Perl无法识别文件夹

时间:2019-07-02 17:52:18

标签: perl

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

下面是简单的代码

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

2 个答案:

答案 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_tino_tblkcnt_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";
}

让我知道是否有帮助!