2011-08-11 1 views
2

CSV 파일에서 정보를 추출하기위한 일부 펄 코드를 작성하려고합니다. 처음부터 코드를 작성하기 전에 나는 CPAN을 검색하여 어떤 종류의 펄 모듈이 있는지 확인하고 패키지 Tie::CSV_File을 찾았습니다.Perl 패키지 Tie :: CSV_File

내 질문/문제 : CPAN에서 해당 모듈에 대한 테스트에 많은 오류가 있기 때문에 설치할 수 없습니다. 이 모듈에서이 문제를 해결하는 방법을 설명하는 항목을 찾을 수 없습니다. 모듈을 직접 다운로드하고 구축하려고 시도했지만 오류는 여전히 존재합니다. 필자는 Perl 5.10, 5.12 및 5.14를 사용했지만 오류는 여전히 존재하며 분명히 동일합니다.

어떤 일이 벌어지고 있는지 알 수있는 사람이 있습니까?

Tie::CSV_File에 대한 좋은 대안이있는 사람이 있습니까? 그 이유는 CSV 파일을 열어 배열처럼 취급 할 수 있기 때문이며, 2 차원 배열 구문으로 주소를 지정하여 각 셀에 직접 액세스 할 수 있기 때문입니다.

미리 감사드립니다.

편집 # 나는 다음과 같은 오류 메시지를 받고 있어요 타이 :: CSV_File를 설치하려고 1 : 나는 정보를 추출하는 CSV 파일의 많은 작업

Files=12, Tests=10, 1 wallclock secs (0.05 usr 0.02 sys + 0.79 cusr 0.12 csys = 0.98 CPU) 
Result: FAIL 
Failed 10/12 test programs. 4/10 subtests failed. 
make: *** [test_dynamic] Error 255 
    BIGJ/Tie-CSV_File-0.21.tar.gz 
    /usr/bin/make test -- NOT OK 
//hint// to see the cpan-testers results for installing this module, try: 
    reports BIGJ/Tie-CSV_File-0.21.tar.gz 
Running make install 
    make test had returned bad status, won't install without force 
Failed during this command: 
BIGJ/Tie-CSV_File-0.21.tar.gz    : make_test NO 
+0

여기에 더 많은 정보가 필요합니다. 어떤 종류의 오류가 있습니까? 어떤 플랫폼을 사용하고 계십니까? 작동 가능한 몇 가지 대안은 Tie :: Handle :: CSV 또는 Text :: CSV_XS입니다. – frezik

+0

perl을 설치하고 cpan을 설치 한 경우 'cpan install Tie :: CSV_File'이라고 말하면 내가 말하는 오류가 나타날 것입니다. –

+0

@ Zeke Hansell,'Tie :: CSV_File'을 패치하려고 한 후, 필자는 내 자신의 목소리를 조롱하기로 결정했습니다. 내 대답은 아래를 참조하십시오. –

답변

2

은 어떤 위로 Tie::CSV_Filefailing for everyone 될 것 같으면! 나는 주변을 둘러보고 몇 가지 대안을 제시하려고 노력할 것입니다. 지금은 더 잘 작동 할 것으로 보이는 이전 버전을 설치해보십시오. 걱정하지 마세요. 5.8 이상의 Perl 버전에서는 테스트가 모두 실패한 것으로 보입니다.

업데이트 : Tie::CSV_File에 결함을 수정하려고했습니다. 몇 가지 문제를 해결했지만 만족스럽게 해결할 수 없었습니다. 가장 가까운 다른 CPAN 모듈은 Tie::Array::DBD이지만 CSV의 성능이 매우 낮다고 주장합니다.

나는 tie- 가능 CSV 배열을 만들기 위해 조롱했고, 이제는 Tie::Array::CSV이라는 제목의 CPAN에 출시했으며 github에서 사용할 수 있습니다.

+0

감사! 나는 무언가를 놓치고 있다고 생각하기 시작했다. 그것이 나를 위해서가 아니라 다른 모든 사람들을 위해 실패한 것을 아는 것은 좋은 일입니다. –

+0

새 모듈을 살펴 보겠습니다.그러나 오늘 금요일이되면, 내가 다시 돌아 오기까지 며칠이 걸릴 것입니다. –

+0

당신이 그것에 도착하면 당신을 위해 거기에, 잘하면 도움이 될 것입니다. 의견이 있으면 알려주세요. –

0

합니다. 타이 :: CSV_FILE을 사용하는 대신 단지입니다 :

open my $file, '<', "filename.csv"; 

while(defined (my $line = <$file>)){ 
    my @lineArray = split ',', $line; 
    my $firstValue = $lineArray[0]; 
    my $secondValue = $lineArray[1]; 
} 
+0

고마워요, 네,이게 대안이지만, 내가 찾고있는 것이 아닙니다. 첫 번째로 - CSV 파일에 쉼표가 포함 된 문자열이 인용 부호로 묶여 있으면 분할이 실제로 라인을 올바르게 분할하지 않습니다. 두 번째로 Tie :: CSV_File 모듈은 마치 2 차원 배열처럼 ENTIRE CSV 파일에 액세스 할 수 있도록되어 있습니다. –