2012-07-31 55 views
0

我有兩組文件。一個文件給出了一個基因名稱列表(每行一個基因)。第二個文件有一個基因對列表(例如,=>'1,2'和一個基因對perl行)。基因名稱是數字。我想列出除已知基因對之外的所有可能的基因組合。數組元素不是用Perl打印的

我的輸出應該是:

3,4 
4,5 
6,7 
... 
... 

但是,我得到這樣的事情=>

,4 
,5 
,7 

所有的第一要素不打印。我不確定代碼究竟出了什麼問題。誰能幫忙?

我的代碼:

#! usr/bin/perl 

use strict; 
use warnings; 

if (@ARGV !=2) { 
    die "Usage: generate_random_pairs.pl <entrez_genes> <known_interactions>\n"; 
} 
my ($e_file, $k_file) = @ARGV; 

open (IN, $e_file) or die "Error!! Cannot open $e_file\n"; 
open (IN2, $k_file) or die "Error!! Cannot open $k_file\n"; 

my @e_file = <IN>; chomp (@e_file); 
my @k_file = <IN2>; chomp (@k_file); 

my (%known_interactions, %random_interactions); 

foreach my $line (@k_file) { 
    my @array = split (/,/, $line); 
    $known_interactions{$array[0]} = $array[1]; 
} 

for (my $i = 0; $i <= $#e_file; $i++) { 
    for (my $j = $i+1 ; $j <= $#e_file; $j++) { 
     if ((exists $known_interactions{$e_file[$i]}) && ($known_interactions{$e_file[$i]} == $e_file[$j])) {next;} 
     if ((exists $known_interactions{$e_file[$j]}) && ($known_interactions{$e_file[$j]} == $e_file[$i])) {next;} 
     print "$e_file[$i],$e_file[$j]\n"; 
    } 
} 
+0

您可以顯示輸入文件的一些例子嗎?每行2-3行? – Flimzy 2012-07-31 03:15:18

+0

池上修復了這個問題。但是,仍然是格式。 對於Entrez的=> 1 \ n 2 \ n 3 \ n 對於known_interactions => 1,2 \ n 2,3 \ n 4,5 \ n – Jordan 2012-07-31 04:03:26

+1

這就是它應該* *是,但它是1 \ r \ n2 \ r \ n3 \ r \ n和1,2 \ r \ n2,3 \ r \ n4,5 \ r \ n – ikegami 2012-07-31 04:08:32

回答

3

你的文件使用CR LF作爲行結束,但您是使用LF作爲行結束系統上,所以你的程序輸出

"3" <CR> "," "4" <CR> <LF> 

,你的終端示出了如

​​

無論使用固定

行尾
dos2unix inputfile 

或更改

chomp(@e_file); 
chomp(@k_file); 

s/\s+\z// for @e_file; 
s/\s+\z// for @k_file; 
+0

嘿,幫助。謝謝! – Jordan 2012-07-31 04:01:29