2012-07-16 86 views
0

常見的代碼是:perl的印刷變量

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代碼:print $ 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

回答

1

如果要在值之間留出空格,請在值之間打印空格。

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

的點連接兩個字符串連接爲一個字符串,在這裏是沒有必要的,因爲print接受一個逗號分隔值列表。

+0

非常感謝..它的工作! – user1504209 2012-07-16 12:48:32

0

只要提到另一種可能性,您可以使用兩個內置的perl變量。

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

輸出字段分隔符被傳遞給print列表中的每個參數之間自動打印。輸出記錄分隔符在print的最後一個參數後面打印。兩者默認都是未定義的,並且解釋爲「不打印任何東西」。

我將它們聲明爲本地塊,作爲將它們限制爲單個print語句的最簡單方法。