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 v5.5 이전 이후의 핵심) /^./ 일치하는 파일을 건너 뛰는 것과 같은 gotchas를 피하십시오.
perl -MFile::DosGlob=glob -lwe "chdir 'test_dir'; print for grep {-d} <*>"
제휴하지 않습니다 StackOverflow