을 당신은 -M
파일 테스트와 일에있는 파일의 나이를 얻을 수 있습니다. -X
-M 스크립트 시작 시간에서 파일 수정 시간 (일)을 뺀 값입니다.
나머지는 파일 목록을 가져 오는 것입니다. 여기서는 opendir
과 readdir
을 사용합니다. readdir
어떤 경로없이 베어 파일 이름을 반환하기 때문에
use 5.012; # so readdir assigns to $_ in a lone while test
opendir(my $dh, $dateDir) or die "Can't open $dateDir directory: $!";
while (readdir($dh)) {
my $file = "dateDir/$_";
if (-f $file and -M $file > 90) {
unlink $file or warn "Can't unlink $file: $!";
}
}
는 경로 또한 위 필요합니다. 실제로 삭제하기 전에 다양한 테스트를 포함 할 수 있습니다. (그리고 항상 테스트 코드가. 첫번째하시기 바랍니다) 버전의
이전 5.12있는 Perl 베어 readdir
는 use 5.012
위에 대해 무엇 인 $_
를 설정하지 않았다. 이 버전의 경우 우리는 (너무 크지 않은 경우) 우리는 오히려
먼저 모든 파일의 목록을 원하는 경우 우리는 한 줄에 디렉토리를 읽을 수
opendir(my $dh, $dateDir) or die "Can't open $dateDir directory: $!";
while (my $file_nopath = readdir($dh)) {
my $file = "$dateDir/$file_nopath";
# same as above
}
을 할 필요가
이
my @filenames_relative = readdir($dh);
무엇
readdir
반환하는 것은 그것에서라고 컨텍스트를 기반으로하기 때문에 그 출력은 여기에 배열에 할당되어 있기 때문에., 그래서 그것이
리스트 문맥에서 호출되어,이 디렉토리에있는 모든 항목의 목록을 반환 .
파일 이름이 디렉토리를 기준으로하기 때문에 그 기능은 입력으로 목록을 필요로하기 때문에 우리가, 전체 경로 여기 리스트 문맥이 map
에 의해 readdir
에 부과
my @files = map { "$dateDir/$_" } readdir($dh);
로를 map
수 있습니다.
http://stackoverflow.com/q/17978927/936986 –