0

一般的なコードは次のとおりです。

use strict;
use warnings;

my $f = $ARGV[0];
use Bio::EnsEMBL::Registry;
use Bio::EnsEMBL::ApiVersion;

my $registry = 'Bio::EnsEMBL::Registry';
$registry->load_registry_from_db(
-host => 'ensembldb.ensembl.org',
-user => 'anonymous',
-port => '5306'
);

my $adaptor = $registry->get_adaptor( 'Homo sapiens', 'core', 'transcript' );

my $transcript =
$adaptor->fetch_by_translation_stable_id($f);

最終行

#

LAST LINE の場合、2 つの値を同じ行に 2 つの列として出力するのに問題があります。

試行 1 コード: print $f . $transcript->display_id. "\n";

結果: api.test.pl ENSP00000418690

ENSP00000418690ENST00000488594

試行 2 コード:print $f, $transcript->display_id. "\n";

結果: perl api.test.pl ENSP00000418690:

ENSP00000418690ENST00000488594

それ以外の試みは、display_id へのアクセスを台無しにします。フォーマットにしたいのは: ENSP00000418690 ENST00000488594

4

2 に答える 2

1

値の間にスペースが必要な場合は、値の間にスペースを印刷してください。

print $f, " ", $transcript->display_id, "\n";

ドットは、2つの文字列を1つの文字列に結合します。これはprint、コンマで区切られた値のリストを受け入れるため、ここでは必要ありません。

于 2012-07-16T11:32:56.107 に答える
0

別の可能性について言及すると、2つの組み込みperl変数を使用できます。

{
    local $, = " ";   # Output field separator
    local $\ = "\n";  # Output record separator
    print $f, $transcript->display_id;
}

出力フィールドの区切り文字は、に渡されたリストの各引数の間に自動的に出力されprintます。出力レコード区切り文字は、の最後の引数の後に出力されprintます。どちらもデフォルトでは未定義であり、「何も印刷しない」ことを意味すると解釈されます。

printそれらを単一のステートメントに制限する最も簡単な方法として、それらをブロックに対してローカルであると宣言しました。

于 2012-07-16T13:32:12.850 に答える