Автор Тема: ошибка в error.log  (Прочитано 3869 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
ошибка в error.log
« : 20 Октября 2004, 13:35:52 »
Всем привет! :)
Подскажите пожалуйста, чего он мне пытается рассказать?
Всё работает "как надо", но в логах вижу такое вот:
[Mon Oct 18 16:13:47 2004] [error] [client 127.0.0.7] Subroutine head redefined at d:/usr/lib/CGI.pm line 231 (#1)
[Mon Oct 18 16:13:47 2004] [error] [client 127.0.0.7]     (W redefine) You redefined a subroutine.  To suppress this warning, say
[Mon Oct 18 16:13:47 2004] [error] [client 127.0.0.7]    
[Mon Oct 18 16:13:47 2004] [error] [client 127.0.0.7]         {
[Mon Oct 18 16:13:47 2004] [error] [client 127.0.0.7]     no warnings;
[Mon Oct 18 16:13:47 2004] [error] [client 127.0.0.7]     eval "sub name { ... }";
[Mon Oct 18 16:13:47 2004] [error] [client 127.0.0.7]         }
[Mon Oct 18 16:13:47 2004] [error] [client 127.0.0.7]    
[Mon Oct 18 16:13:47 2004] [error] [client 127.0.0.7] Prototype mismatch: sub main::head ($) vs none at d:/usr/lib/CGI.pm line 231 (#2)
[Mon Oct 18 16:13:47 2004] [error] [client 127.0.0.7]     (S unsafe) The subroutine being declared or defined had previously been
[Mon Oct 18 16:13:47 2004] [error] [client 127.0.0.7]     declared or defined with a different function prototype.

это дословно. :)
неприятно в общем. хочется чтоб лог чистеньким был.
смотрела, смотрела я на это безобразие, да так ничего и непоняла.
пока-пока. :)

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
ошибка в error.log
« Ответ #1 : 20 Октября 2004, 14:04:40 »
AnnA
ищи sub head в своей программе, переименуй ее или используй пример который указан в ошибке.
The documentations is your friend

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
ошибка в error.log
« Ответ #2 : 20 Октября 2004, 14:27:11 »
нету у меня такого саба. :( у меня их там всего навсего три штуки, так что долго и искать не пришлось. Вот незадачка, правда ? Я и не лазила в этот d:/usr/lib/CGI.pm чтоб там чего-то переопределять...
no warnings не хочу использовать.
строку use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
заменила на use CGI::Carp qw(fatalsToBrowser);
теперь лог даёт: Prototype mismatch: sub main::head vs ($) line 13
line 13: use LWP::Simple;
Скажите, а разве имеет значение порядок перечисление загружаемых модулей? Ну, то есть, есть разница написала я так:
#!/usr/bin/perl -w
use strict;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use CGI::FastTemplate;
use CGI::Fast;
use HTML::TokeParser;
use LWP::Simple;
use Fcntl qw(:flock);

use locale;
use POSIX qw(locale_h);
setlocale(LC_CTYPE,"ru_RU.CP1251");...

или... или, например, вот так:use locale;
use POSIX qw(locale_h);
setlocale(LC_CTYPE,"ru_RU.CP1251");
use HTML::TokeParser;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use strict;
use CGI qw(:standard);
use LWP::Simple;
use CGI::FastTemplate;
use Fcntl qw(:flock);
use CGI::Fast;
Разницы же никакой, или я ошибаюсь?
пока-пока. :)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
ошибка в error.log
« Ответ #3 : 20 Октября 2004, 14:35:24 »
AnnA
Может имеет смысл не выгружать методы из CGI?

и писать, например, не:

use CGI qw(:standard);
print header;

а...

use CGI;
my $cgi = new CGI;
print $cgi->header;

???

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
ошибка в error.log
« Ответ #4 : 20 Октября 2004, 14:46:31 »
Phoinix я распечатала скрипт, на самом деле там проблема с LWP::Simple; перемудрила где-то, сейчас буду разбираться. :) Пасиба.
Цитировать
Phoinix:
не выгружать методы из CGI

это ведь больше писанины. :)
в скрипте несколько форм и от одной к другой есть переходы параметров, например:
my 
@names $q->param;
my %OLD_PARAM=();
foreach (@
names) { $OLD_PARAM{$_}=$q->param($_); }

while (
my ($k,$v) = each(%OLD_PARAM)) {print $q->hidden($k,$v),"\\n";}

ну то есть это я к тому, что много переписывать придётся. :)
пока-пока. :)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
ошибка в error.log
« Ответ #5 : 20 Октября 2004, 15:00:56 »
AnnA
Цитировать
это ведь больше писанины...


Зато IMHO более понятно, что за метод (процедуру) ты запускаешь (из какого модуля)

Цитировать
ну то есть это я к тому, что много переписывать придётся


Top menu -> Edit -> Replace...

;)

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
ошибка в error.log
« Ответ #6 : 20 Октября 2004, 15:11:49 »
Цитировать
Phoinix: IMHO
:)

а по вопросу вот чего нашла:
Цитировать
CAVEAT
Note that if you are using both LWP::Simple and the very popular CGI.pm module, you may be importing a head function from each module, producing a warning like ``Prototype mismatch: sub main::head ($) vs none\'\'. Get around this problem by just not importing LWP::Simple\'s head function, like so:

        use LWP::Simple qw(!head);
        use CGI qw(:standard);  # then only CGI.pm defines a head()
Then if you do need LWP::Simple\'s head function, you can just call it as LWP::Simple::head($url).

один в один мой случай. :):):)
пока-пока. :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28