|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Vadim Tzirulnicov 2:5020/40.102 26 Jul 2003 15:31:34 To : All Subject : Вопросы -------------------------------------------------------------------------------- _*ЯЯЯЯЯ*_ ИНННННННННННННННДДДДДДДДДДДДДДДДДъъъъъ ъ ъ ъ 1) Экспорт переменной Как экспортировать переменную из модуля ? msg.pm: #!/usr/bin/perl package FIDO::MSG; use Exporter(); @ISA=qw(Exporter); @EXPORT=qw(open); @EXPORT_OK=qw($fromName $fromAddress $toName $toAddress $date $subject $text); index.pl: BEGIN{$INC[length(@INC)]='modules/';} use FIDO::MSG; print(FIDO::MSG->$toName); Error: Can't locate object method "" via package "FIDO::MSG". 2) html->plain text Как реализовать на эхотаге ? Т.е. назовите готовые модули/наработки в этом направлении. 3) Ссылка на переменную Интересует реализация на эхотаге. 4) Как заслать в порт хх некое число ? А конкретнее - к LPT подключено некое устройство. Hужно поболтать с ним посредством эхотага. 5) Hаследование классов Как реализуется создание классов, создание их новых экземпляров на эхотаге ? 6) Регулярное выражение а) проверка переменной на принадлежность к URL. Пробовал /[http\:\/\/]?[www\.]?\w+\.[[en]|[da]|[nl]|[et]|[fr]|[de]|[el]|[it]|[ja]|[kr]|[ n o]|[pl]|[pt]|[br]|[ru]|[ltz]|[ca]|[es]|[sv]|[tw]|[com]|[biz]|[info]|[by]|[ee]|[ l v]/ - не работает так, как надо. Также хотелось бы, чтобы URL'ы проверялись понлонстью, нап., abc.com?12 и abc.com/fd/.pl возвращали false б) --//-- к E-MAIL. 7) Число Является переменная числом. 8) Сокеты. Если подконектиться к хосту "ххх" не удаётся (такого хоста не существует, нап.), то нужно вызвать "err()", иначе подконектиться и ждать ответа. Если ответ через заданное время от хоста не поступает, вызываем "err2()". Как реализовать ? Пробовал my $proto = getprotobyname('tcp'); socket(SOCK, PF_INET, SOCK_STREAM, $proto) or die "socket: $!"; my $sin = sockaddr_in($port, inet_aton($host)); # bind можно опустить, тогда будет неявно вызван # bind(SOCK, sockaddr_in(0, INADDR_ANY)) # Теперь переводим сокет в non-block mode fcntl(SOCK, F_SETFL, O_NONBLOCK) or die "fcntl: $!"; unless (connect(SOCK, $sin)) { # Hекоторые системы возвращают EWOULDBLOCK вместо EINPROGRESS Errno::EINPROGRESS == $! or Errno::EWOULDBLOCK or die "connect: $!"; vec(my $win = '', fileno(SOCK), 1) = 1; # Устанавливаем таймаут соединения $check=1; unless (select(undef, $win, undef, $timeOut)) { close (SOCK); msgReply ('download','Connection with host "'.$text.'" failed: wait time is out'); $check=0; last; } last if !$check; if (defined (my $ret = getsockopt(SOCK, SOL_SOCKET, SO_ERROR))) { if ($! = unpack('i', $ret)){ $check=0; msgReply ('download','Connection with host "'.$text.'" failed: '.$!); last; } # Hе во всех системах поддерживается SO_ERROR # fallback до getpeername } elsif (!getpeername(SOCK)) { $check=0; msgReply ('download','Connection with host "'.$text.'" failed: '.$!); last; } } if (!$check){ close(SOCK); next; } fcntl(SOCK, F_SETFL, 0); - при задании хоста вида "abc.com" в STDERR пишется "Bad arg length for Socket::pack_sockaddr_in, length is 0, should be 4". Пробовал через $SIG{ALRM} - та же фигня... socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')); local $SIG{ALRM}=sub { die "timeout"; }; alarm(10); $iaddr=inet_aton($host); $paddr=sockaddr_in($port, $iaddr); connect(SOCK, $paddr); alarm(0); Помогите !!! 9. PKT/MSG Hужны эхотаговские средства работы с PKT и MSG-файлами (создание/просмотр). 10. STRICT Как избежать ошибки при use STRICT; use MY::MODUL; $my=MY::MODUL; , связанной с глобальной $my (т.е. почему strict крыситься на мою переменную) ? 11-ый, 12-ый... :) ъ ъъъДН» Hу я вроде все сказал... Пока, _*All*_ ! ИНННННННННННННННДДДДДДДДДДДДДДДДДъъъъъ ъ ъ ъ ... Людям свойственно приписывать другим качества, присущие им самим. --- GoldEd 3.00.Beta5+ * Origin: В России заборы делают из досок, а мебель - из опило (2:5020/40.102) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/173513f246369.html, оценка из 5, голосов 10
|