문제

실행 시간 인수로 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

디렉토리 목록을 수행하는 다른 방법이 있습니다. 문서에서 이것들을 참조하십시오

  1. perldoc -f opendir, perldoc -f readdir

  2. perldoc perlopentut

  3. perldoc -f glob

  4. 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} <*>"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top