Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> require или как избавиться от единицы? 
:(
    Опции темы
korob2001
Дата 19.10.2003, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Всем здрасте!
Написал фото альбом. Еще раньше написал счётчик. Теперь пытаюсь подключить с помощью require cчётчик к фото альбому. Но скрипт возвращает постояно результат + единицу. Через SSI счётчик работает без проблем.

Скрипт счётчика примерно такой:

Код

#!/usr/bin/perl -w
# файл counter.pl
use strict;
use Fcntl qw/ :flock /;
.........
......... # Объявляем глобальные переменные
.........
sub addCount {
 my $uri = shift || $ENV{ DOCUMENT_URI }; #либо $ENV{ SCRIPT_NAME },
                                                                      #либо через SSI
 #Подсчитывает в DBM файле где $uri - ключ хеша.
 #подпрограмма инкрементирует четчик
 #и возвращает результат такого вида:
 # <nobr><img src='../../count/0.gif'>.....<img src='../../count/1.gif'></nobr>
}
&addCount();

пытаюсь вызвать его так:
Код

#!/usr/bin/perl -w
#файл photos.pl
use strict;
use lib("../counter/");
require('counter.pl');
print addCount( $ENV{ SCRIPT_NAME } );

Получаю показания графического счётчика + 1 в конце. Насколько я знаю это require возвращает значение true, что говорит о том что библиотека успешно подключена. Но как избавиться от этой единицы? Вырезать её с помощью оператора s///; , думаю не самое умное решение. Может у кого будут другие предложения?

Вот ещё какая бодяга. Счетчик возвращает не полное значение, т.е. показания должны быть из 8 цифр, а он показывает из 7. Такое чувство что вместо этой, не достающей цифры выводится ета вот единица.

Заранее благодарен,
Денис

Это сообщение отредактировал(а) korob2001 - 19.10.2003, 13:11


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
NightGoblin
Дата 20.10.2003, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1021
Регистрация: 24.11.2002
Где: 127.0.0.1

Репутация: нет
Всего: 11



korob2001
require, имхо, тут ни при чем. В подклчаемом файле в конце должно просто стоять 1; (или любое другое ненулевое значение). Более того, поскольку перл - компилятор, функция включается в код еще на этапе компиляции. Скорее всего, у тебя что-то не в порядке с функцией... Не мог бы ты привести код?


--------------------
Kernel panic: /dev/null overflow!
GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y?
B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981
PM MAIL WWW ICQ   Вверх
korob2001
Дата 21.10.2003, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Спасибо. Уже разобрался.
Проблема была вот в чём:

фукция возвращала такое значение.

print "$count";
# Где $count = "<img src='0.gif'><img src='0.gif'>...<img src='1.gif'>";

а вызывал я её так:

print &addCount( $ENV{ SCRIPT_NAME } );

вобщем работать всё начало после того как я удалил print при вызове:

&addCount( $ENV{ SCRIPT_NAME } );


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
NightGoblin
Дата 21.10.2003, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1021
Регистрация: 24.11.2002
Где: 127.0.0.1

Репутация: нет
Всего: 11



Ну правильно, функция у тебя сама распечатывает результат, а потом print печатает результат функции - 1,то есть true smile.gif


--------------------
Kernel panic: /dev/null overflow!
GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y?
B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.3636 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.