2011-01-20 3 views
0

나는 서버에 새 파일을 알리는 irssi 스크립트를 만들고 싶습니다. 그러나 먼저 Perl에서 서버 (아파치 2.2.16 디렉토리 목록)에 최신 파일을 반환하고 다음 스크립트가 실행 된 후 스크립트가 필요합니다. 더 새로운 파일이 없다면 이전에 null이 반환되거나 서버에 새 파일이 있으면 해당 파일에 대한 링크를 반환합니다. 어떤 도움을 주셔서 감사합니다.디렉토리 목록이있는 서버의 최신 파일에 대한 링크를 반환 하시겠습니까?

답변

2
  • 변수 $start_time

    당신은 어떤 영구적 인 방법으로 "마지막 실행 시간"(캐시, 파일, 지속적인 세션 데이터, 데이터베이스/DBM 파일)를 저장해야합니다

    나중에에 스크립트의 시작 시간을 기억 .

  • 는 각 파일에 대한 디렉토리 구조

  • 에서 재귀 있다면 그냥 그 생성 또는 수정을 찾을 File::Find을 특정 디렉토리에있는 파일, 또는 않다면 스크립트 (glob()를 사용하여 원하는 파일의 목록을 생성 되세요 stat 데이터를 사용하여 최신 파일을 찾기 stat 전화

  • 를 통해 타임 스탬프를 (둘 중 하나를 당신이 원하는) 당신이 파일을 나열 glob를 사용하는 경우, 목록을 검색하여 수행;. File::Find 경우, 단지 콜백은 암기의 일환으로 그것을 할 "지금까지 본 것"

  • 이 검색 "마지막 실행 시간"영구 데이터

  • 을 발견 마지막 파일은 나중에 "마지막 실행 시간"보다 경우 해당 파일에 대한 링크를 반환 파일. 그렇지 않은 경우 null을 반환합니다.

  • 스크립트의 시작 시간 ($start_time)을 "마지막 실행 시간"의 새 값으로 저장합니다.


UPDATE

파일의 목록 (웹 서버 등) 로컬이 아닌 경우, 당신은 파일 (및 타임 스탬프에 대한 stat)를 나열하는 glob 단계를 교체해야 디렉토리 목록을 포함하는 적절한 HTML 페이지를 긁어 내고 (예 : 페이지를 검색하는 데 WWW::Mechanize을 사용하고 HTML을 구문 분석하고 파일 이름과 타임 스탬프를 검색하는 경우 HTML::Twig 또는 HTML::Parser 사용) HTML의 내용을 읽는 모듈 테이블과 나는 CPAN이 특히 Apaches 파일 목록 HTML을 구문 분석하는 모듈을 가지고 있다면 놀라지 않을 것입니다. 내 직감이 맞았 및 mod_autoindex가에서 HTML 출력을 구문 분석 가능한 모듈이처럼


UPDATE2는

가 보이는 : File::Listing::apache (libwww-perl 유통의 일부) 도움을

+0

감사합니다 :) – James

관련 문제