2014-12-07 4 views
-3

Мне нужно было создать скользящее окно размером 15, пройти через файл Fasta и сохранить все значения скользящего окна в хэш. Когда я пытаюсь напечатать, я получаю ошибкуКак создать скользящее окно и поместить значения скользящего окна в хэш?

Глобальный символ «$ последовательность» требует явного имя пакета на ./findAllKmers.1.pl линии 60.
Выполнение ./findAllKmers.1.pl прерванную из-за ошибки компиляции»

#!/usr/bin/perl 
use warnings; 
use strict; 

my %windowSeqScores =(); 

my $sequenceRef = loadSequence("/scratch/Drosophila/dmel-2L-chromosome-r5.54.fasta"); 
my $windowSize = 23; 
my $stepSize = 1; 
my $maxScore = 0; 
my $sequence = @_; 
my $in_file = 'uniqueKmersEndingGG.fasta'; 

open (my $fh, '>', $in_file) or die "Could not open file 'filename' $!"; 

for (
    my $windowStart = 0; 
    $windowStart <= (length($$sequenceRef) - $windowSize); 
    $windowStart += $stepSize 
) 
{ 
    my $windowSeq = substr($$sequenceRef, $windowStart, $windowSize); 
    sub loadSequence { 
     my ($sequenceFile) = @_; 
     my $sequence = ""; 
     my $counter = 0; 
     unless (open(FASTA, "<", $sequenceFile)) { 
      die $!; 
     } 

     while (<FASTA>) { 
      my $line = $_; 
      chomp($line); 
      if ($line !~ /^>/) { 
       my $sequence = $line; 
       if (length($sequence) == 15) { 
       $counter = $counter + 1; 
       print $_; 
      } 
     } 
     return \$sequence; 
    } 
} 
print $sequence; 
+1

Вы только разместили 46 строк кода ... но ошибка в строке 60 – Yetti99

+0

Извините, я удалил кучу ненужного кода. ошибка находится в последней строке $ sequence. спасибо за помощь. –

ответ

0

Я попытался компиляция коды. Я получил ошибку„Отсутствует правые кудрявые или квадратные скобки в test.pl линии 44, в конце строки“Я просто добавила закрывающую фигурную скобку„}“после того, как последняя строка и составлена.

Вы объявляете функцию внутри цикла for(). Это необычно. Я мог бы это сделать за пределами цикла.