Та же ОС?Та же версия Perl?Хм ....
Я видел это сообщение об ошибке, когда в пути, который он пытается создать, есть существующий файл.Например, я пытаюсь создать каталог foo/bar/bar/foo
, но есть файл foo/bar/bar
, mkpath
завершится неудачно с сообщением об ошибке, которое вы сказали.
Возможно ли, что это так?Попробуйте эту небольшую тестовую программу на вашем компьютере:
Выполните следующую команду в обеих системах:
$ perldoc -lm File::Path
Это выведет расположение файла :: Pathмодуль, который включен.Я подозреваю, что вы не запускаете модуль File :: Path, который вам кажется.
После того, как вы определили фактические используемые модули, проверьте, согласны ли эти два модуля.Кроме того, пока вы это делаете, сделайте perl -V
(это заглавная V
).Это даст вам много информации о ваших установках Perl, включая libpath, используется posix.Вполне возможно, что вы скомпилировали Perl с тем же исходным кодом, но флаги компиляции отличались.
Попробуйте эту тестовую программу на обеих системах:
use strict;
use warnings;
use File::Path;
open (FOO, ">foo") or die qq(Things really aren't going your way\n);
print FOO "THIS\n";
close FOO;
if (my $value = mkpath "foo/foo/bar/foo") {
print "It worked: $value !\n";
} else {
print "It didn't: $value !\n";
}
print "And the program continues\n";
Этот должен ошибка, потому что я создаю файл foo
, а затем пытаюсь указать путь foo/boo/bar/foo
.На самом деле я получаю следующую ошибку:
mkdir foo: File exists at ./test.pl line 11
Одна из этих вещей даст нам подсказку, что происходит.