1. GetLastPrefix 함수 추가
- 디렉토리와 화일이름을 인자로 받아서, 화일명이 겹치지 않도록 앞에 붙일 수 있는 prefix 를 반환한다.
- 화일이 없으면 "" 반환
- "화일명"만 있으면 "2_" 반환
- "화일명", "2_화일명", "3_화일명" 이 있으면 "4_" 반환
- "1_화일명" 은 취급하지 않는다
- 이 함수를 호출한 후 반환되는 문자열을 그대로 화일명 앞에 붙여주면 된다.
- 주의사항
- 반환되는 숫자
- 반환하는 숫자가 항상 제일 큰 숫자인 것은 아니다. "file" "2_file" "3_file" 이 존재하는 상태에서, 관리자가 "2_file"을 삭제한 후에 새로 "file"을 업로드하면 이 경우 이름이 "2_file" 로 결정된다. ("4_file" 이 아니다)
- 마찬가지로, 위의 예에서 "file" 을 삭제한 후 새로 업로드하면 "2_" 와 "3_" 이 있다 하더라도 화일명은 "file" 이 된다.
- 중간에 삭제된 화일이 있다 하더라도 무조건 제일 큰 숫자에 1 을 더한 값을 반환하게 하는 것을 고려했는데, 그러기 위해서는 디렉토리에 있는 모든 화일들의 이름을 한번씩 검사해야 하기 때문에 속도가 너무 떨어진다 (화일이 1000 개 있을 때, 현재 방식보다 10~20 배 느렸다)
-
sub GetLastPrefix {
my ($dir, $file) = @_;
if (!(-f "$dir/$file")) {
return "";
}
if (!(-f "$dir/2_$file")) {
return "2_";
}
my $prefix = 2;
while (-f "$dir/$prefix"."_$file") {
$prefix += 10;
}
$prefix -= 10;
while (-f "$dir/$prefix"."_$file") {
$prefix++;
}
return $prefix ."_";
}
1.1. 추가 업데이트 내역
ext1.42a 에서 함수가 크게 바뀌었습니다. /화일업로드와 /오에카키도 같이 바뀝니다.
위키위키분류