4

ネットワーク上のルートディレクトリから始まるすべてのディレクトリで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\共有データ

私の初心者コードを許してください。私の質問は、ネットワーク ドライブで何か問題を起こしているのか、それとも管理者に特権を要求する必要があるのか​​ということです。ありがとう、ダン

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 に答える