GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  TK::EVENTLOOP (3)

.ds Aq ’

NAME

Tk::Event - ToolKit for Events

CONTENTS

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.

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 EVENTLOOP (3) 2013-11-15

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.