从Perl中的网络驱动器读取文件

时间:2012-09-14 15:56:40

标签: perl networking drive file-find

我正在研究一个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,

1 个答案:

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