您将如何在 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/