2014-02-26 1 views
0

10 열의 CSV 파일이 있습니다. 8 번째 열은 0과 1을가집니다. 내 스크립트는 8 번째 열의 1을 확인해야합니다. 1 번째 열이 8 번째 열에 있으면 해당 2 번째 및 10 번째 열을 인쇄해야합니다. 나는 이것을 시도했지만 제대로 작동하지는 않는다.CSV 파일에서 일부 행 정보를 검색하는 펄 스크립트

open PROJ3, "> proj3.h " or die $!; 
open (CSV_XS, "<",$file) or die $!; 
while (<CSV_XS>) { 
    if ($csv->parse($_)) { 
     my @columns = $csv->fields(); 
     if($ARGV[1] eq "USPC") { 
      if($columns[8]==1) {//checking is done here 
       print PROJ ("ICU_VECTOR_INFO($columns[2] $columns[10])\n"); 
      } 
     } 
    } else { 
     my $err = $csv->error_input; 
     print "Failed to parse line: $err"; 
    } 

} 
+0

입력 파일과 출력 파일 또는 그 일부를 알려주십시오. –

+0

$ csv가 적절한 파서로 선언 되었습니까? 그런 다음 perl -d와 함께 perl 디버거를 사용하고 @columns의 변수를 살펴보십시오. – Simson

+1

"제대로 작동하지 않음"을 정의하십시오. 오류가 있습니까? 그렇다면 무엇입니까? – ThisSuitIsBlackNot

답변

1

파서를 선언 정상에

use Text::CSV; 
my $csv = Text::CSV->new({ sep_char => ',' }); 

를 추가합니다. 이 패키지를 시스템에서 사용할 수없는 경우 $ csv-> parse를 reg-exp로 바꾸십시오.

+0

기본'sep_char'는 쉼표이므로,이 경우에는 지정할 필요가 없습니다. – ThisSuitIsBlackNot

0

열이 10 개라고 말했을 때 숫자는 10이나 인덱스를 의미합니까? 숫자를 의미하는 경우 $columns[8] 대신 $columns[7]의 확인 된 필드의 색인을 수정해야합니다.

관련 문제