2015-01-28 3 views
1

Archive::Zip을 사용하는 스크립트가 있는데, membersMatching 메서드를 사용하고 싶지만, 무엇이 누락되었는지 알 수 없습니다. Archive :: Zip members 매치가 Perl에서 메서드를 찾을 수 없습니까?

나는 스크립트의 시작 부분에 모듈라는 :

use Archive::Zip qw(:ERROR_CODES :CONSTANTS :MISC_CONSTANTS); 

를이 모듈이 사용되는 코드 블록입니다 :

while (my $file = readdir(TRIMMED_CELL_DIR)) { 

    #Only if file ends in _1.fastqc.zip (only 1 instance per "trimmed" subdirectory.) 
    if($file =~ /.*\_1\_fastqc\.zip/){ 

     #Extract the file summary.txt and assign it to filehandle SUMMARY_R1. 
     $file = "${trimmedDirectory}/${file}"; 
     print "Loading ZIP file: $file. \n"; 
     my $zip = Archive::Zip->new($file); 
     my @txtFileMembers = $zip->membersMatching('.*\.txt'); 
     foreach my $txtFile (@txtFileMembers){ 
      extractMember($txtFile); 
      open(SUMMARY_R1,"< $txtFile"); 
     } 

    } 

I 오류 Can't locate object method "membersMatching".가 계속 .. . 그리고 나는 그것이이 membersMatching 메소드와 관련이있다는 것을 알고있다. 그러나 나는 스크립트에서 그것을 호출하는 방법을 모른다.

membersMatching ($ 정규식) membersMatching ({정규식 => $ 정규식}) 파일 이름이 일치하는 회원의 의 배열을 반환 : 아카이브 :: 우편 번호에 대한 테 CPAN 페이지를 제외하고 아무것도과 같이 사용하는 말을하지 않습니다 목록 컨텍스트에서 정규 표현식이 제공됩니다. 스칼라 컨텍스트에서 일치하는 멤버의 수를 반환합니다.

my @textFileMembers = $zip->membersMatching('.*\.txt'); 
    # or 
    my $numberOfTextFiles = $zip->membersMatching('.*\.txt'); 

Archive::Zip->new($file) 기능이있는 ZIP 파일 로딩이 작동하므로 모듈이 우편 파일 ($file)의 경로를 확인 그냥 방법 memebersMatching ...

+0

나머지 오류 메시지는 무엇입니까? 또한 패키지를 통해 'Xxx' – Borodin

답변

1

수출되고있다. 나는 그것이 거기에서 실패하고 있다고 생각한다. 코드를 아래 코드로 업데이트하십시오.

my $zip = Archive::Zip->new(); 
unless ($zip->read('someZip.zip') == AZ_OK) { 
    die 'read error'; 
} 

print "zip contains the following files:\n"; 
print "$_\n" for $zip->memberNames();