Как получить доступ к сетевым ресурсам из Perl в Windows? - PullRequest
2 голосов
/ 01 июля 2010

Как бы вы изучали и записывали в общие папки Windows в Perl?Примечание. У меня нет прав на создание сетевого диска на соответствующей рабочей станции.Я попытался (безрезультатно) следующее:

my $ROOTDIR1 = 'c:/';
my $ROOTDIR2 = '//server/dir1/dir2/';
sub dtest {
  my $ROOTDIR = shift;
  warn "Testing '$ROOTDIR'.";
  opendir( SHAREFILE, "$ROOTDIR" ) or warn "1 -> " . $!;
  my @files = <$ROOTDIR*>;
  warn ("2 -> nothing !") if (!scalar @files);
  chdir $ROOTDIR or warn "3 -> " . $!;
}
dtest($ROOTDIR1);
dtest($ROOTDIR2);

Но, как показывает следующий вывод:

Testing 'c:/'. at E:\test\a.pl line 5.
Testing '//server/dir1/dir2/'. at E:\test\a.pl line 5.
1 -> No such file or directory at E:\test\a.pl line 6.
2 -> nothing ! at E:\test\a.pl line 8.
3 -> No such file or directory at E:\test\a.pl line 9.

Ни один из этих методов не работает.

Любая идея

Ответы [ 3 ]

4 голосов
/ 01 июля 2010

UNC-пути работают для меня, в ActivePerl 5.12.1 и Cygwin Perl 5.10.1, без проблем. Прежде всего, я бы предположил, что нет пути '//server/dir1/dir2', и я могу только думать, что то, что вы проходите, не является законным путем UNC, куда вы на самом деле пытаетесь попасть.

  • За исключением этого, возможно, истекло время ожидания? Я знаю, что если у вас нет диска, привязанного к определенному общему ресурсу в Windows, это может быть медвежьей попыткой открыть сетевой ресурс с пустым UNC-путем, загрузка в Explorer часто может занять несколько минут.

  • Еще одна вещь, которую нужно проверить, возможно, это общий ресурс, который потребует от вас ввода пароля при подключении. Я не уверен, охватывает ли Perl процесс подписи в Windows. Возможно, ваши сетевые ресурсы отвечают только тем программам, которые знают, как ответить на вызов, данный им сервером.

1 голос
/ 21 января 2013

UNC-путь чувствителен к регистру - поймал меня

0 голосов
/ 01 июля 2010

UNC-пути должны иметь обратную косую черту.

...