Вы не проверяете, какую ошибку получили.
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
.Страница man stat
(2) определяет, когда возвращается эта ошибка.В моей системе это говорит следующее:
[Аргумент] относится к файлу, размер, номер индекса или количество блоков которого не могут быть представлены соответственно в типах off_t
, ino_t
или blkcnt_t
.Эта ошибка может возникать, например, когда приложение, скомпилированное на 32-разрядной платформе, без -D_FILE_OFFSET_BITS=64
вызывает stat()
для файла, размер которого превышает (1<<31)-1
байт.
Короче говоря,тот факт, что вы используете безумно устаревшую сборку Perl, настиг вас.