Perl не находит файлы данных - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть Perl-скрипт, который отказывается видеть существующие файлы данных.Когда я беру код и изолирую в тестовом сценарии perl, он работает нормально, но в основном сценарии perl он ничего не находит.

Код выглядит следующим образом:

use Cwd qw(cwd);

my $dir = cwd;
print STDERR "gen-decsplecs : dir $dir : file $ARGV[0]\n";

if (-e $ARGV[0]) {
    print STDERR "gen-declspecs : File Exists : $ARGV[0]\n";
} else {
    print STDERR "gen-declspecs : File does not exist : $ARGV[0]\n";
}

if (-e "C:/Users/walter/Documents/Projects/agar-1.5.0/ada-core/ctxt.h") {
    print STDERR "gen-declspecs : File Exists : C:/Users/walter/Documents/Projects/agar-1.5.0/ada-core/ctxt.h\n";
} else {
    print STDERR "gen-declspecs : File does not exist : C:/Users/walter/Documents/Projects/agar-1.5.0/ada-core/ctxt.h\n";
}

open(F, $ARGV[0]) || die "$ARGV[0]: $!";

Это печатает:

gen-decsplecs : dir C:/Users/walter/Documents/Projects/agar-1.5.0 : file './ada-core/ctxt.h'
gen-declspecs : File does not exist : './ada-core/ctxt.h'
gen-declspecs : File Exists : C:/Users/walter/Documents/Projects/agar-1.5.0/ada-core/ctxt.h
'./ada-core/ctxt.h': No such file or directory at mk/gen-declspecs.pl line 93.
gen-declspecs.pl failed

Так что мой вопрос, если код выполняет каталог fomr:

C: /Users/walter/Documents/Projects/agar-1.5.0

И ищет файл:

. / Ada-core / ctxt.h

Почему он не существует по относительному пути, когда файл с полным патчем:

C:/Users/walter/Documents/Projects/agar-1.5.0/ada-core/ctxt.h

существует?Особенно, когда я скопировал Perl в тестовый скрипт, и он работает !!!

1 Ответ

0 голосов
/ 11 декабря 2018

Если эта строка:

print STDERR "gen-declspecs : File does not exist : $ARGV[0]\n";

(которая не включает в себя одинарные кавычки) печатает этот вывод:

gen-declspecs : File does not exist : './ada-core/ctxt.h'

(что делает), то это означает, что ваш $ARGV[0] начинается и заканчивается ложными одинарными кавычками.-e не собирается их лишать;Насколько он знает, может быть, вы действительно заинтересованы в папке с именем '., которая содержит папку с именем ada-core, которая содержит файл с именем ctxt.h'!

Чтобы это исправить, вам нужно запустить скриптправильно;не ставьте ложные одинарные кавычки в аргументах.

(Если вы работаете в Unix-подобной среде, вы должны знать, что оболочка Windows по умолчанию не использует те же правила цитированияна всех.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...