UseModWiki소스수정/GetLastPrefix함수 페이지의 소스 보기
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: UseModWiki소스수정/GetLastPrefix함수 는 읽기 전용 페이지입니다.
== # 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 배 느렸다) : {{{#!vim perl ### 화일명이 겹칠 경우 앞에 붙일 prefix 를 얻는 함수 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 ."_"; } }}} === # 추가 업데이트 내역 === ext1.42a 에서 함수가 크게 바뀌었습니다. [[/화일업로드]]와 [[/오에카키]]도 같이 바뀝니다.
=== # 사용자 의견 ===
---- [[위키위키분류]]
UseModWiki소스수정/GetLastPrefix함수
페이지로 돌아가기 |
다른 수정본 보기