6

我想根据索引选择将哪些数据放入哪个文件中。但是,我似乎坚持以下几点。

我使用文件句柄数组创建了文件:

my @file_h;
my $file;
foreach $file (0..11)
{
    $file_h[$file]= new IT::File ">seq.$file.fastq";
}

$file= index;
print $file_h[$file] "$record_r1[0]$record_r1[1]$record_r1[2]$record_r1[3]\n";

但是,由于某种原因,我在最后一行出现错误。帮助任何人......?

4

3 回答 3

19

那应该只是:

my @file_h;
for my $file (0..11) {
    open($file_h[$file], ">", "seq.$file.fastq")
       || die "cannot open seq.$file.fastq: $!";
}

# then later load up $some_index and then print 
print { $file_h[$some_index] } @record_r1[0..3], "\n";
于 2012-06-03T04:47:14.710 回答
5

您始终可以使用面向对象的语法:

$file_h[$file]->print("$record_r1[0]$record_r1[1]$record_r1[2]$record_r1[3]\n");

此外,您可以更简单地打印出数组:

$file_h[$file]->print(@record_r1[0..3],"\n");

或者像这样,如果这四个元素实际上就是全部:

$file_h[$file]->print("@record_r1\n");
于 2012-06-03T02:17:53.930 回答
1

首先尝试将 分配$file_h[$file]给一个临时变量:

my @file_h;
my $file;
my $current_file;

foreach $file (0..11)
{
    $file_h[$file]= new IT::File ">seq.$file.fastq";
}

$file= index;
$current_file = $file_h[$file];

print $current_file "$record_r1[0]$record_r1[1]$record_r1[2]$record_r1[3]\n";

据我记得,Perl 不会将其识别为输出句柄,否则会抱怨语法无效。

于 2012-06-03T01:47:35.543 回答