2011-07-04 6 views
-2

내 데이터에는 170 개의 행 (exp.values)과 18,000 개의 열 (probbeid)이 있습니다. 특정 probeId를 입력하면 특정 열을 검색해야합니다. 그리고 그 probeid는 실행 중에 입력됩니다. 누구나 아이디어가 있습니까? 이 프로그램의 출력에는 아무런 문제가 없습니다. 이 프로그램은 코딩하는 동안 입력 된 ID P_170221 작업을 수행합니다. P_170221 대신 변수 $ probeid (STDIN이 있음)를 입력하려고하면 다음과 같은 오류가 나타납니다.이 프로그램에서 열 레이블 probeid에 대한 사용자 입력을 얻는 방법

병합되지 않은 초기화 된 값 사용 .) 또는 문자열 C에서 : /Users/xxx/perl_workspace/perl_proj_one/GIS/just.pl 라인 (16), <> 라인 1.

#!/usr/bin/perl 
use strict; 
use warnings; 
use Tie::Handle::CSV; 
open(OUT,">C:\\Users\\xxx\\Desktop\\Output.txt")||die $!; 
my $fh = Tie::Handle::CSV->new("C:\\Users\\xxx\\Desktop\\GE_Acc.csv", header => 1); 

while (my $csv_line = <$fh>) { 
    print OUT $csv_line->{'FID'} . ", " . $csv_line->{'IID'} .",".$csv_line->{'P_1710221'}."\n"; 
    my $i++; 
} 

close $fh; 
+2

입력 데이터의 작은 샘플은 어떻게 생깁니 까? 어떤 출력을보고 싶니? 현재 출력에 어떤 문제가 있습니까? 당신이 무엇을 요구하고 있는지 명확히 밝히면 사람들이 당신을 도울 수있게됩니다. –

+0

'line 16 '이란 무엇입니까? – Toto

답변

0

당신은 각 라인에 대한 일반적인 해시 참조를 가져옵니다의 키를 반복 . 여기에 임의의 순서로 배열하고 싶지 않기 때문에 키를 정렬합니다.

while (my $csv_line = <$fh>) { 
    print OUT $csv_line->{'FID'} . ", " . $csv_line->{'IID'}; 
    foreach my $key (sort keys %$csv_line) { 
     # Ignore columns that aren't probeids 
     next if $key eq 'FID' or $key eq 'IID'; 

     print ", " . $csv_line->{$key}; 
    } 
    print "\n"; 
} 
+0

나를 도와 주셔서 대단히 감사합니다. – Priya

+0

Hi Palant, 런타임에 probeid를 입력하도록 사용자에게 요청한 경우 변수를 시도했지만 표시됩니다 C :/Users/xxx/perl_workspace의 연결 (.) 또는 문자열에서 초기화되지 않은 값 사용 /perl_proj_one/GIS/just.pl line 16, <> line 1. – Priya

관련 문제