Perl で DOS からディレクトリ リストを取得するにはどうすればよいですか?
-
19-09-2019 - |
質問
実行時の引数として Perl スクリプトに渡されたパスからディレクトリ名を取得する必要があります。私が使用しているコードは次のとおりです。
$command ="cd $ARGV[0]";
system($command);
$command="dir /ad /b";
system($command);
@files=`$command`;
ただし、この Perl スクリプトを実行しているディレクトリ内のディレクトリ名が返されます。つまり、この Perl スクリプトにパスが渡されるターゲット ディレクトリからディレクトリ名を取得するにはどうすればよいでしょうか?
解決
このも
動作するはずです
$command = "dir /ad /b $ARGV[0]" ;
他のヒント
質問投稿で何をしようとしているのかから判断すると、
$dir = $ARGV[0];
chdir($dir);
while(<*>){
chomp;
# check for directory;
if ( -d $_ ) {
print "$_\n" ;
}
}
コマンドラインで
c:\test> perl myscript.pl c:\test
ディレクトリのリストを作成するには他の方法もあります。ドキュメントからこれらを参照してください
perldoc perlfunc
(ファイルをテストするための演算子を見てください。-x
,-d
,-f
等)
あなたの問題は、「CD」を経由して「システム」を実行すると、perlのプロセスの作業ディレクトリを変更しないということです。これを行うには、 "CHDIR" 機能を使用します:
chdir($ARGV[0]);
$command="dir /ad /b";
system($command);
@files=`$command`;
ファイル:: DosGlobする(perlのバージョン5.5前からコア)を使用します/^\./.
perl -MFile::DosGlob=glob -lwe "chdir 'test_dir'; print for grep {-d} <*>"
所属していません StackOverflow