Страница 1 из 1

perl: ошибки

Добавлено: 2010-01-07 2:04:42
icb
Раньше сайт работал нормально, после переноса на другой сервер перестал.
В логах пишет

Код: Выделить всё

[Wed Jan 06 22:49:34 2010] [error] [client 95.26.147.9] Useless use of a constant in void context at ../lib/login.cgi line 113.
[Wed Jan 06 22:49:34 2010] [error] [client 95.26.147.9] syntax error at ../lib/login.cgi line 551, near "( err"

Строки 113, 551

Код: Выделить всё

if($l eq '' or $p eq ''){ return err('Пустое имя пользователя или пароль.'); }
if($sid eq '' or $sid == 0){ return( err("Вы не вошли в систему.") ); }

Вроде обычный код, да и работал же.
Может надо какие модули перла доставить?
Сейчас стоит такое
p5-DBI-1.60.9 The perl5 Database Interface. Required for DBD::* modules
p5-Storable-2.21 Persistency for perl data structures
p5-gettext-1.05_2 Message handling functions
perl-5.8.9_3 Practical Extraction and Report Language

Re: perl: ошибки

Добавлено: 2010-01-07 2:20:03
ProFTP
что такое err?

это какая-то фнцкция может быть которая не подключенная...

вообще надо смотреть код, покажи или дай доступ...

Re: perl: ошибки

Добавлено: 2010-01-07 2:47:00
icb
что такое err?

Это объявлено ниже в файле login.cgi

Код: Выделить всё

sub err
{
   $errstr = shift;
   return (undef,undef);
}


вообще надо смотреть код

У меня нет к нему доступа :(
Да и говорят: "все же работало на старом сервере".

Re: perl: ошибки

Добавлено: 2010-01-07 2:54:20
ProFTP
можно попробовать так:

Код: Выделить всё

if($sid eq '' or $sid == 0){
return err("Вы не вошли в систему") ;
}


а где 551 строка?

Re: perl: ошибки

Добавлено: 2010-01-07 3:24:46
icb
можно попробовать так:

Ошибка осталась прежней, только на следующей строке.

а где 551 строка?

Не совсем корректно объеденил строки

113

Код: Выделить всё

if($l eq '' or $p eq ''){ return err('Пустое имя пользователя или пароль.'); }


551

Код: Выделить всё

if($sid eq '' or $sid == 0){ return( err("Вы не вошли в систему.") ); }


Везде вызывается err, но почему ошибки разные?

Re: perl: ошибки

Добавлено: 2010-01-07 3:28:05
ProFTP
2 строки по разному написаны

я не знаю что перед ними и что после....

попробуй так:

Код: Выделить всё

    if($sid eq '' or $sid == 0) { die "Вы не вошли в систему"; }

Re: perl: ошибки

Добавлено: 2010-01-07 3:30:23
icb
Ошибка пропала (551 строка).

Re: perl: ошибки

Добавлено: 2010-01-07 3:30:52
ProFTP

Код: Выделить всё

 Useless use of a constant in void context

возвращается не определенное значение , это просто придуприждение

Re: perl: ошибки

Добавлено: 2010-01-07 3:33:59
icb
А почему вообще появляется эта ошибка?
Чем не нравится err?

Re: perl: ошибки

Добавлено: 2010-01-07 3:37:30
ProFTP
точно сказать не могу....
надо попробовать

Re: perl: ошибки

Добавлено: 2010-01-07 4:45:50
icb
Просто править код чужих сайтов особо не получится :(
Да и ошибка скорее всего связана действительно с переездом.

Re: perl: ошибки

Добавлено: 2010-01-07 19:48:30
thefree

Код: Выделить всё

sub err
{
   $errstr = shift;
   return (undef,undef);
}
Это точно полностью ВСЯ функция?
Правильнее будет

Код: Выделить всё

sub err()
{
   $errstr = @_;
   return (undef,undef);
}
if(!defined($l) or !defined($p)) { return err("Пустое имя пользователя или пароль."); }
if(!defined($sid) or $sid eq 0){ return err("Вы не вошли в систему."); }


Версия perl изменилась у Вас.

Re: perl: ошибки

Добавлено: 2010-01-07 21:40:19
icb
Это точно полностью ВСЯ функция?

Да.

Версия perl изменилась у Вас.

Да.
Можно заставить старые скрипты работать без переделки?

Re: perl: ошибки

Добавлено: 2010-01-08 2:51:57
icb
Версия perl поменялась с 5.8.8 на 5.8.9 - не должно быть так критично для скриптов.

Re: perl: ошибки

Добавлено: 2010-01-08 16:54:34
thefree
icb писал(а):Версия perl поменялась с 5.8.8 на 5.8.9 - не должно быть так критично для скриптов.

не должно быть, но еще есть модули ... и бла бла бла ... То что я вам порекомендовал помогло?

Re: perl: ошибки

Добавлено: 2010-01-08 19:12:19
icb
То что я вам порекомендовал помогло?

Да, хватило убрать скобки у return
Но вылезла куча других ошибок :(

Код: Выделить всё

print() on closed filehandle MEM at
readline() on closed filehandle MEM at