Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Вопросы   Vadim Tzirulnicov   26 Jul 2003 15:31:34 
 Вопросы   Alexander Lunkov   29 Jul 2003 09:57:14 
 Re: Вопросы   Alexey Mahotkin   05 Aug 2003 01:53:02 
Архивное /ru.perl/173513f246369.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional