如何在 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
ETC)
您的问题是,运行“CD”通过“系统”不改变的Perl程序的工作目录。要做到这一点,使用 “CHDIR” 功能:
chdir($ARGV[0]);
$command="dir /ad /b";
system($command);
@files=`$command`;
使用文件:: DosGlob (因为Perl V5.5前芯)避免像跳过文件陷阱匹配/^\./.
perl -MFile::DosGlob=glob -lwe "chdir 'test_dir'; print for grep {-d} <*>"
不隶属于 StackOverflow