나는 디렉토리에서 특정 파일을 찾아서 처리하는 스크립트를 작성하고있다. 내가 쓰고 계속 다음하나의 명령문으로 Perl에서 디렉토리를 읽을 수 있습니까?
opendir DIR, $dir;
@files = readdir DIR;
closedir DIR;
동안 이 할 수있는 더 우아한 방법이 있는지 (그리고이해야 사실 에) 기능이 포장, 궁금 수 있을까요?
나는 디렉토리에서 특정 파일을 찾아서 처리하는 스크립트를 작성하고있다. 내가 쓰고 계속 다음하나의 명령문으로 Perl에서 디렉토리를 읽을 수 있습니까?
opendir DIR, $dir;
@files = readdir DIR;
closedir DIR;
동안 이 할 수있는 더 우아한 방법이 있는지 (그리고이해야 사실 에) 기능이 포장, 궁금 수 있을까요?
가장 우아한 것은 다른 누군가가 이미 작성한 기능을 사용하는 것입니다.
use File::Slurp;
@files = read_dir $dir; # . and .. are removed by default
또 다른 방법은 do
블록을 사용하는 것입니다 :
my @files = do {
opendir my $d, '/your/dir/';
readdir $d;
};
그 내 $ d를이와 closedir 파일 핸들이기 때문에 필요하지 않습니다 (당신이 DIR 글로벌는 달리) 차단할 지역이기 때문에 더 우아한 $ d가 범위를 벗어날 때 자동으로 닫힙니다.
/I3az은/
아무도 아직 glob
을 제안하지 않았다?
@files = glob("$dir/*");
을 또는 당신도, 점으로 시작 파일을 필요로하는 경우 : OK, 여기 간다
@files = glob("$dir/{.,}*")
글로브는 가장 간단한 솔루션입니다. 파일을 두 번 이상 열지 않는 한 처음 세 줄이 서브 루틴에 속한다고 생각하는지 모르겠다.
이 질문에 대한 답변을 확인해보십시오. http://stackoverflow.com/questions/ 1506801/what-reasons-there-to-prefer-glob-over-readdir 또는 versa-in-perl – innaM
"디렉토리 작성"이란 정확히 무엇을 의미합니까? –
나는 "다음 * 코드 작성"을 의미합니다. –