[英]How can I get a directory listing from DOS in Perl?
我需要從作為運行時參數傳遞給Perl腳本的路徑中獲取目錄名稱。 這是我正在使用的代碼:
$command ="cd $ARGV[0]";
system($command);
$command="dir /ad /b";
system($command);
@files=`$command`;
但是它仍然返回我正在運行此Perl腳本的目錄內的目錄名稱。 簡而言之,如何從目標目錄獲取目錄名稱,該目錄的路徑已傳遞到此Perl腳本?
從您要在問題帖子中嘗試做的事情來判斷
$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`;
這也應該工作
$command = "dir /ad /b $ARGV[0]" ;
請使用File :: DosGlob (在perl v5.5之前的版本開始,一直存在該內核)以避免類似跳過與/^\\./匹配的文件之類的陷阱。
perl -MFile::DosGlob=glob -lwe "chdir 'test_dir'; print for grep {-d} <*>"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.