Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

Tk::Eventloop (3)

Name

Tk::Eventloop - 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

User Contributed Perl Documentation                               Eventloop(3)



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.



ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+----------------------------+
       |ATTRIBUTE TYPE |      ATTRIBUTE VALUE       |
       +---------------+----------------------------+
       |Availability   | library/perl-5/perl-tk-532 |
       +---------------+----------------------------+
       |Stability      | Volatile                   |
       +---------------+----------------------------+

NOTES
       Source code for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This software was built from source available at
       https://github.com/oracle/solaris-userland.  The original community
       source was downloaded from
       http://search.cpan.org/CPAN/authors/id/S/SR/SREZIC/Tk-804.036.tar.gz.

       Further information about this software can be found on the open source
       community website at http://search.cpan.org/~srezic/Tk.



perl v5.32.0                      2013-11-15                      Eventloop(3)