Отправляет email-рассылки с помощью сервиса Sendsay

Нужна помощь по Perl

Доброго времени суток ВСЕМ,

Кусок кода из обработчика лога squid
11. use URI;
12. use URI::URL;
13. use URI::https;
14. use Net::IPv4Addr qw(:all);
15. use Socket;
16. use Net::hostent;

...

164. @u = split('/',$URLlink); #$u[2] урл типа www.google.com.ua

165. if (($u[2] eq undef) or ($u[2] eq ''))
166. {
167. $u[2]='192.168.1.7';
168. }
169. $iptmp = gethostbyname($u[2]); #Получаем PACKET IP
170. $urlip = inet_ntoa($iptmp->addr); #Получаем "человеческое" IP

...
Прим.: Приведена реальная нумерация строк

Текст ошибки:
"Can't call method "addr" on an undefined value /path/to/script/script line 170,


Скрипт работает, но переодически слетает. В скрипте только 249 строк.
Как я понимаю неопределена переменная $u[2]. Но почему тогда не отрабатывает
условие ?
Как подменять неопределённые значения заведомо правильным ?

--
С наилучшими пожеланиями,
Колесник Андрей
mailto:kolesn***@e*****.ua,
ICQ: 208861095

-*Информационный канал Subscribe.Ru
Адрес подписки:
Написать в лист: mailto:comp.soft.bsd.all-list@subscribe.ru
Отписать: mailto:comp.soft.bsd.all--unsub@subscribe.ru

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Колесник Андрей Wed, 28 Jul 2004 13:27:44 +0300 (#200226)

 

Ответы:

Колесник Андрей пишет:

170,

1.Посмотрите что в 587 строке лога squid (<> означает стандартный ввод)
2.gethostbyname вернул ошибку в виде undef (не смог отрезольвить).

-*Информационный канал Subscribe.Ru
Адрес подписки:
Написать в лист: mailto:comp.soft.bsd.all-list@subscribe.ru
Отписать: mailto:comp.soft.bsd.all--unsub@subscribe.ru

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   "Yuri N. Glibovetz" Wed, 28 Jul 2004 20:24:45 +0300 (#200678)

 

Доброго времени суток Yuri,


скрипт основан на squid2mysql (http://www.nixp.ru/cgi-bin/go.pl?q=articles;a=squid2mysql_freebsd5)

т.е. access.log не существует

--
С наилучшими пожеланиями,
Колесник Андрей
mailto:kolesn***@e*****.ua
ICQ: 208861095

-*Информационный канал Subscribe.Ru
Адрес подписки:
Написать в лист: mailto:comp.soft.bsd.all-list@subscribe.ru
Отписать: mailto:comp.soft.bsd.all--unsub@subscribe.ru

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Колесник Андрей Thu, 29 Jul 2004 00:14:37 +0300 (#200849)

 

Колесник Андрей пишет:

Попробуйте вместо

/usr/local/squid/sbin/squid2mysql < /var/log/squid/access.log

указать

tee /var/log/squid/access.log.copy < /var/log/squid/access.log |
/usr/local/squid/sbin/squid2mysql

(в одну строку - у меня почтовик переносит) и проанализировать
/var/log/squid/access.log.copy

-*Информационный канал Subscribe.Ru
Адрес подписки:
Написать в лист: mailto:comp.soft.bsd.all-list@subscribe.ru
Отписать: mailto:comp.soft.bsd.all--unsub@subscribe.ru

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   "Yuri N. Glibovetz" Thu, 29 Jul 2004 19:13:30 +0300 (#201526)

 

Доброго времени суток Yuri,






Спасибо за подсказку,
после анализа, есть такая строка в логе:
^@^@^@^@^@ ... ^@^@^@[далее строка лога squid]
Я думаю из-за этого и слетает скрипт.

ЛЮДИ ПОМОГИТЕ ПОЖАЛУЙСТА, КАК ЭТО ПОБОРОТЬ ?


Тока оттестится под GPL ОБЯЗАТЕЛЬНО ВЫЛОЖУ !!!


P.S. ONLY FreeBSD

--
С наилучшими пожеланиями,
Колесник Андрей
mailto:kolesn***@e*****.ua
ICQ: 208861095

-*Информационный канал Subscribe.Ru
Адрес подписки:
Написать в лист: mailto:comp.soft.bsd.all-list@subscribe.ru
Отписать: mailto:comp.soft.bsd.all--unsub@subscribe.ru

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Колесник Андрей Fri, 30 Jul 2004 02:00:28 +0300 (#201766)