The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

Tk::Eventloop (3)
  • >> Tk::Eventloop (3) ( Разные man: Библиотечные вызовы )
  •  

    NAME

    Tk::Event - ToolKit for Events
     
    

    SYNOPSIS

     use Tk::Event;
    
    

     Tk::Event->fileevent(\*FH, 'readable' => callback);
    
    

     Tk::Event->lineavail(\*FH, callback);
    
    

     use Tk::Event::Signal qw(INT);
    
    

     $SIG{'INT'} = callback;
    
    

     use Tk::Event::process;
    
    

     Tk::Event->proc($pid, callback);
    
    

     QueueEvent(callback [, position])
    
    
     

    DESCRIPTION

    That is better than nothing but still hard to use. Most scripts want higher level result (a line, a ``block'' of data etc.)

    So it has occured to me that we could use new-ish TIEHANDLE thus:

    my $obj = tie SOMEHANDLE,Tk::Event::IO;

    while (<SOMEHANDLE>)
     {
     }

    Then the READLINE routine registers a callback and looks something like:

    sub READLINE
     {
      my $obj = shift;
      Event->io(*$obj,'readable',sub { sysread(*$obj,${*$obj},1,length(${*$obj}) });
      my $pos;
      while (($pos = index(${*$obj},$/) < 0)
       {
        DoOneEvent();
       }
      Event->io(*$obj,'readable',''); # unregister
      $pos += length($/);
      my $result = substr(${*$obj},0,$pos);
      substr(${*$obj},0,$pos) = '';
      return $result;
     }

    This is using the scalar part of the glob representing the _inner_ IO as a buffer in which to accumulate chars.


     

    Index

    NAME
    SYNOPSIS
    DESCRIPTION


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру