1

この質問は「BioPerl」に関するものですが、おそらくそれよりも一般的な質問だと思います。

基本的に、私はBio::Tree::TreeIオブジェクトを作成しました。それを文字列変数に変換しようとしています。

それを文字列変数に変換する唯一の方法は、次を使用してそのツリーをストリームに書き込むことです。

# a $tree = Bio::Tree::TreeI->new() (which I know is an actual tree as it prints to the terminal console)

my $treeOut = Bio::TreeIO->new(-format => 'newick')
$treeOut->write_tree($tree)

->write_tree の出力は「ツリーをストリームに書き込みます」ですが、 Bio::TreeIOの関数から文字列を返す別の方法が見つからないため、文字列変数でそれをキャプチャするにはどうすればよいですか

4

2 に答える 2

3

標準出力を変数にリダイレクトできます。

my $captured;
{
  local *STDOUT = do { open my $fh, ">", \$captured; $fh };
  $treeOut->write_tree($tree);
}
print $captured;
于 2014-07-08T11:47:11.340 に答える