perl - 如何在 Windows 中通过 Perl 访问网络共享?

标签 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.

这些方法都不起作用。

有什么想法吗?

最佳答案

UNC 路径在 ActivePerl 5.12.1 和 Cygwin Perl 5.10.1 中对我来说很有效,没有任何问题。我首先猜测没有路径 '//server/dir1/dir2' 并且我只能认为您传递的内容不是您实际所在位置的合法 UNC 路径试图得到。

  • 除此之外,也许是超时了?我知道,如果您没有映射到 Windows 中特定共享的驱动器,尝试使用裸 UNC 路径启动网络共享可能会很困难,通常需要几分钟才能在资源管理器中加载。

  • 另一件需要检查的事情是,这可能是一个需要您在连接时输入密码的共享。我不确定 Perl 是否涵盖了 Windows 中的登录过程。也许您的网络共享仅响应那些知道如何回答服务器向其提出的挑战的程序。

关于perl - 如何在 Windows 中通过 Perl 访问网络共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3156749/

相关文章:

perl - {} 在 perl 中是什么意思?

html - 对 perl HTML 解析有一点帮助

regex - qr() 的输出何时以及为何发生变化?

perl - 在使用("1"时,不能将字符串 "strict refs")用作HASH引用

c++ - 使用Visual Studio Express和SDL2在Windows中破坏了SDL_mixer 2编译

perl - 杀死长时间运行的 Fastcgi 进程

c++ - 检测网络电缆何时拔出

c# - 从 C# 启动应用程序 (.EXE)?

c# - 我需要指导来构建我的第一个 C# 项目

windows-xp - 如何使用 AutoHotkey PostMessage 将 WM_WININICHANGE 发送到程序管理器?