我正在研究一个perl脚本,该脚本在我们网络上某个根目录开始的所有目录中为pdf执行文档清单。该脚本在本地运行良好,但我无法从网络驱动器读取文件。我有草莓
这是我的代码的开头
use strict;
use Excel::Writer::XLSX;
use Cwd;
use Tk;
use File::Find;
my @analystreports;
my @directories;
我使用Tk Gui获取目录
my $homeDir = Tk::MainWindow->new->chooseDirectory;
捕获当前目录中的所有文件和文件夹
find(\&grabPDF, $homeDir);
sub grabPDF {
my $file = $_;
if ($file =~ /\.pdf/g) {
push @analystreports, $File::Find::name;
}
}
我的网络驱动器在净使用中看起来像这样
本地N:远程\ abc-file-01 \共享数据
请原谅我的初学者代码。我的问题是我是否在使用网络驱动器时出错了,或者我是否需要向管理员询问权限。非常感谢Dan,
答案 0 :(得分:1)
驱动器是驱动器。您可以传递以下任何字符串:
N:\
n:\
N:/
n:/
你甚至可以传递UNC名称。
\\abc-file-01\shared data
//abc-file-01/shared data
当然,您可能必须使用一些转义来构建字符串。
"N:\\"
"N:/"
"n:\\"
"n:/"
"\\\\abc-file-01\\shared data"
"//abc-file-01/shared data"
但这可能不相关,因为你似乎是从Tk获取字符串而不是构建它。
您的代码中存在错误。
if ($file =~ /\.pdf/g) {
应该是
if ($file =~ /\.pdf/) {
可能
if ($file =~ /\.pdf\z/) {
g
没有任何意义,可能会导致问题(尽管我认为您的特定代码不会受到影响)。摆脱g
。