如何从Windows中的Perl访问网络共享?

时间:2010-07-01 10:02:28

标签: perl windows-xp

您如何在perl中探索和写入Windows共享目录? 注意:我无权在相关工作站上创建网络驱动器。 我试过(没有结果)以下内容:

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 个答案:

答案 0 :(得分:4)

UNC路径适用于我,在ActivePerl 5.12.1和Cygwin Perl 5.10.1中,没有任何障碍。我首先会猜测没有路径'//server/dir1/dir2'我只能认为你传递的东西不是合法的UNC路径,无论你想要到达哪里。

  • 除此之外,或许是时候了吗?我知道如果你没有一个驱动器映射到Windows中的特定共享,它可能是一个试图用裸UNC路径调出网络共享的熊,它通常需要几分钟才能在资源管理器中加载。

  • 要检查的另一件事可能是这是一个需要您在连接时输入密码的共享。我不确定Perl是否涵盖Windows中的签名过程。也许您的网络共享仅响应知道如何回答服务器给予他们的挑战的程序。

答案 1 :(得分:1)

UNC路径区分大小写 - 抓住了我

答案 2 :(得分:0)

UNC路径应该有反斜杠。