4

我正在研究一个 perl 脚本,该脚本从我们网络上的某个根目录开始为所有目录中的 pdf 进行文档清单。该脚本在本地运行良好,但我无法让它从网络驱动器读取文件。我有草莓perl

这是我的代码的开始

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\shared 数据

请原谅我的初学者代码。我的问题是我是否对网络驱动器做错了,或者我是否必须向我们的管理员询问权限。非常感谢,丹

4

1 回答 1

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.

于 2012-09-14T17:54:57.187 回答