2016-02-08 3 views
-1

Привет У меня есть Perl-скрипт с именем feed_validator.pl. Исходя из этого, я звоню модуль Perl с именем fetch_sequence_vals.pm следующим образом:Недостаточно аргументов для модуля perl-Ошибка компиляции

my ($AIT_hash_ref,$SE_hash_ref,$SBC_hash_ref,$db_pack_val_tpb)=fetch_sequneceVals::seqVals(); 

fetch_sequence_vals.pm возвращает ссылку из трех хэшей, как показано ниже.

return(\%AIT_hash,\%SE_hash,\%SBC_hash,$db_pack_val_tpb); 

Теперь я передаю эти три хэшей в качестве входных данных для двух модулей Perl имени SortFeedSeq и SeqComparator, как показано ниже.

my $sortfeedtrailer = SortFeedSeq::sortfeedseq(
    $region,$sortfileout,$SortedTrailerFile,\%AIT_hash,\%SE_hash,\%SBC_hash); 
my $compareseq= SeqComparator::comparator(
    $region,$SortedTrailerFile,$seq_err,$gap_err,\%AIT_hash,\%SE_hash,\%SBC_hash); 

Когда я бегу feed_validator.pl, он бросает ошибку компиляции говоря

Not enough arguments for SortFeedSeq::sortfeedseq 

и

Not enough arguments for SeqComparator::comparator 

Я застрял в этом от нескольких дней. Пожалуйста, помогите мне в решении ошибки. Заранее спасибо.

+0

Они являются подпрограммами внутри пакетов SortFeedSeq и SeqComparator соответственно. – nithin

+0

Не проблема, о которой вы спрашиваете, но не должна '\% AIT_hash, \% SE_hash, \% SBC_hash' быть' $ AIT_hash_ref, $ SE_hash_ref, $ SBC_hash_ref'? Всегда используйте 'use strict; использовать предупреждения qw (все); '! – ikegami

+0

Привет, я новичок в Perl. Что означает прототип. Как это узнать? – nithin

ответ

1

sortfeedseq и comparator у каждого есть прототип. Прототип sub's диктует синтаксис вызовов к нему, и вы нарушаете синтаксис, наложенный прототипами этих субтитров. В частности, вы не передаете правильное количество аргументов подлогам.

Поскольку мы не знакомы с подмножествами, о которых идет речь, мы не можем сказать вам, что ожидать от аргументов. Вам нужно будет проконсультироваться с документацией для этих модулей или изучить сами подсистемы.

Смежные вопросы