Forum Webscript.Ru
Программирование => Perl => Тема начата: 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.
-
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.
-
у меня такая же ошибка была, просто вызов функций надо делать после описания...