我的数据有170行(exp.values)和18,000列(Probeid)。如果我输入特定的probeId,我需要检索特定的列。并且将在运行时输入该probeid。有没有人有想法?我对这个程序的输出没有问题。这个程序执行编码时输入的id P_170221的任务。当我尝试输入变量$ probeid(由STDIN获取)代替P_170221时,我得到了如下错误:
在连接(。)或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;
答案 0 :(得分: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";
}