Forum Webscript.Ru

Программирование => Perl => Тема начата: Forza от 04 Июня 2004, 16:24:16

Название: ошибка \'called too early to check prototype\'
Отправлено: Forza от 04 Июня 2004, 16:24:16
В error.log апача появилась следующая ошибка:
main::show() called too early to check prototype at c:\\server\\cgi\\script.pl line 30.
Функция show() вызывается на 30-й строке скрипта, а описывается позднее.
При этом, во-первых, несмотря на ошибку, скрипт работает нормально, во-вторых, после создания и использования этой функции эта ошибка поначалу не возникала, она появилась в дальнейшем, когда были добавлены другие функции, и вообще вся программа выросла.
Из-за чего это может быть? Чем это грозит? И как это можно исправить?

p.s. Я помню, что в Си, если тело функции было ПОСЛЕ её вызова, то ДО вызова нужно было указать прототип - имя функции и список параметров. Но на Перле неоднократно писал тело функции после вызова, и всё было Ok.
Название: ошибка \'called too early to check prototype\'
Отправлено: NeoNox от 04 Июня 2004, 16:31:28
perldoc perldiag
Цитировать
(W prototype) You\'ve called a function that has a pro-
           totype before the parser saw a definition or declara-
           tion for it, and Perl could not check that the call
           conforms to the prototype.  You need to either add an
           early prototype declaration for the subroutine in
           question, or move the subroutine definition ahead of
           the call to get proper prototype checking.  Alterna-
           tively, if you are certain that you\'re calling the
           function correctly, you may put an ampersand before
           the name to avoid the warning.  See perlsub.
Название: ошибка \'called too early to check prototype\'
Отправлено: synthez от 04 Июня 2004, 19:22:37
у меня такая же ошибка была, просто вызов функций надо делать после описания...