常用代码是:
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);
最后一行
#对于最后一行,我在将两个值打印为同一行中的两列时遇到问题:
尝试1个代码:打印$ f。 $ transcript-> display_id。 “\ n” 个;
结果:api.test.pl ENSP00000418690
ENSP00000418690ENST00000488594
尝试2个代码:打印$ f,$ transcript-> display_id。 “\ n” 个;
结果:perl api.test.pl ENSP00000418690:
ENSP00000418690ENST00000488594
任何其他尝试都会混淆访问display_id。我希望格式是: ENSP00000418690 ENST00000488594
答案 0 :(得分:1)
如果要在值之间留一个空格,请在值之间打印一个空格。
print $f, " ", $transcript->display_id, "\n";
点将两个字符串连接成一个字符串,这里不需要,因为print
接受以逗号分隔的值列表。
答案 1 :(得分:0)
只是提到另一种可能性,你可以使用两个内置的perl变量。
{
local $, = " "; # Output field separator
local $\ = "\n"; # Output record separator
print $f, $transcript->display_id;
}
输出字段分隔符自动打印在传递给print
的列表中的每个参数之间。输出记录分隔符在print
的最终参数之后打印。默认情况下,两者都是未定义的,并解释为“不打印任何内容”。
我将它们声明为块的本地,这是将它们限制为单print
语句的最简单方法。