【发布时间】:2014-08-02 15:30:19
【问题描述】:
我有这个代码
use warnings;
use Getopt::Long;
use Bio::SeqIO;
GetOptions("in=s" => \$file) or die("Error in command line arguments\n");
open $new3, ">", "sequences_tmp.tab";
$seqin = Bio::SeqIO->new(-file => $file, -format => "Fasta");
$seqout = Bio::SeqIO->new(-file => ">$new3", -format => "tab");
while ($seq = $seqin->next_seq()) {
$seqout->width($seq->length);
$obj = $seq->id ."\t".$seq->seq()."\n";
$seqout->write_seq($obj);
}
close $new3;
希望以这种方式打印序列seq_id TAB sequence。但是,此代码打印一个空文件。你知道发生了什么事吗?
【问题讨论】:
-
文档建议 -file 标志需要文件名而不是文件句柄
-
你应该总是
use strict和use warnings在你的 Perl 程序的顶部。当您在代码方面寻求帮助时,只有利用这种明显的帮助来调试语言本身是一种礼貌。您还应该测试每个open调用是否成功,并使用die字符串覆盖$!内置变量,以便清楚为什么操作失败。在许多情况下,最简单的方法是简单地use autodie,此时将隐式包含必要的检查