Forum Webscript.Ru

Программирование => Perl => Тема начата: Inecs от 22 Марта 2006, 17:36:29

Название: Немогу понять что за ошибка.
Отправлено: Inecs от 22 Марта 2006, 17:36:29
Вообщем есть подпрограммка:

sub moduleconf_reader {
# Открываем конфигурационный файл модуля
open (moduleconf,"config/moduleconf.cfg") || die "Немогу найти конфигурационный файл модуля";
my (%moduleconf);

while () {
    chomp;                  # удаляем перевод строки
    s/#.*//;                # убираем комментарии
    s/^\\s+//;               # убираем начальные пробелы
    s/\\s+$//;               # убираем конечные пробелы
    s/\\    s/\\>/\\>/g;
    s/\\"/\\"/g;
    s/:/\\&\\#58;/g;
    s/\\\'/'/g;
    s/\\`/`/g;
    next unless length;     # проверяем, не осталось ли чего
    my ($var, $value) = split(/\\s*=\\s*/, $_, 2);
    $moduleconf{$var} = $value;
                 }
close (moduleconf);
return (%moduleconf);
                      }


Выдаёт такую ошибку:

Unquoted string "moduleconf" may clash with future reserved word at E:/www/czone/cgi-bin/users/auth.pl line 100.\\r

Unquoted string "moduleconf" may clash with future reserved word at E:/www/czone/cgi-bin/users/auth.pl line 118.\\r

Я немогу понять, что не так. В чём ошибка?
Название: Немогу понять что за ошибка.
Отправлено: cr4ck3r от 22 Марта 2006, 17:38:39
open (moduleconf,"config/moduleconf.cfg")
просто для дескрипторов файлов рекомендуют давать названия большими буквами, то есть:
open (MODULECONF,"config/moduleconf.cfg")
Название: Немогу понять что за ошибка.
Отправлено: Inecs от 22 Марта 2006, 17:42:21
Ок спасибо...

А вот ещё что. Есть подпрограммка:

#------------------------------------------------------------------------------#
# Подпрограмма определения, от куда пришёл пользователь
#------------------------------------------------------------------------------#
# Вывод данных
# my ($user_referer, $user_from_site) = user_from_site();
sub user_from_site {
# Определяем от куда пришёл к нам пользователь
my $user_referer=$ENV{HTTP_REFERER};
my $site_domain=$siteconf{site_domain};
my $user_from_site = $user_referer =~ m|$site_domain|;

if ($user_from_site eq "1") {
$user_from_site="1"; # Если пользователь пришёл с нашего сайта
                       } else {
$user_from_site="0"; # Если пользователь пришёл от куда-то ещё
                       }
return ($user_referer, $user_from_site);
                   }

И ругается вот как:

Use of uninitialized value in pattern match (m//) at E:/www/czone/cgi-bin/users/auth.pl line 283.\\r

283 линией является строка:

my $user_from_site = $user_referer =~ m|$site_domain|;
Название: Немогу понять что за ошибка.
Отправлено: AnnA от 22 Марта 2006, 20:00:02
а, если нет $ENV{HTTP_REFERER} ? :)

my $user_from_site = $ENV{HTTP_REFERER} ? $ENV{HTTP_REFERER} =~ m|$site_domain| : \'unknown \';
Название: Немогу понять что за ошибка.
Отправлено: Phoinix от 23 Марта 2006, 12:37:16
Inecs
Цитировать

$user_from_site="0"; # Если пользователь пришёл от куда-то ещё

На это он тоже будет ругаться, точнее после этого...


sub user_from_site {
if ($ENV{\'HTTP_REFERER\'} && $ENV{\'HTTP_REFERER\'} =~ /$siteconf{\'site_domain\'}/) {return \'our\'}
else {return \'other\'}
}