テキスト ファイルから変数にファイル パスを送信しようとしています。次に、そのファイル パスを使用して開き、内部のディレクトリを一覧表示します。
open (FILE, 'drive_path.txt') or die $!;
my $dir= (<FILE>);
close (FILE);
chomp $dir;
print $dir;
opendir (DIR, '$dir') or die $!;
印刷出力により、正しいパスの場所が得られます。
C:\Documents and Settings\KSoli7151794\Desktop\TEST
しかし、何らかの理由で「そのようなファイルまたはディレクトリはありません」と表示されます。
編集: これが私のデスクトップ上のファイルのリストです: ドライブ C のボリュームはオペレーティング システム ドライブ ボリューム シリアル番号は 18C9-6274 です
C:\Documents and Settings\KSoli7151794\Desktop のディレクトリ
10/04/2013 11:35 AM <DIR> .
10/04/2013 11:35 AM <DIR> ..
11/18/2010 11:27 AM 587,776 7za.exe
10/04/2013 11:31 AM 51 drive_path.txt
10/03/2013 05:39 PM 1,494 ExtractAndCreate.bat
09/27/2013 04:34 PM 604 ExtractAndDelete.bat
10/04/2013 11:30 AM 1,854 ParseAndRename.pl
08/07/2013 11:38 AM <DIR> Resources
10/04/2013 11:06 AM <DIR> TEST
10/04/2013 11:35 AM 0 test.txt
8 File(s) 995,380 bytes
4 Dir(s) 285,785,993,216 bytes free
エラー メッセージ付きの新しいコード:
open (FILE, 'drive_path.txt') or die $!;
my $dir= (<FILE>);
close (FILE);
chomp $dir;
print $dir;
opendir (DIR, $dir) or die $!;
C:\Documents and Settings\KSoli7151794\Desktop\TEST
Invalid argument at ParseandRename.pl line 18
最初の 18 行
#!/usr/local/bin/perl
use strict;
use warnings;
open (FILE, 'drive_path.txt') or die $!;
local $/;
my $blocksize;
my $directory;
my $testcase;
my $count = -1;
my @foldernames;
my @testsuite;
my $dir = (<FILE>);
close (FILE);
chomp $dir;
print $dir;
opendir (DIR, $dir) or die $!;
解決策: 取り出したlocal$/;
ところ、意図したとおりに機能しているようです。