home *** CD-ROM | disk | FTP | other *** search
-
- <HTML>
- <HEAD>
- <TITLE>Tk::Event - ToolKit for Events</TITLE>
- <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
- <LINK REV="made" HREF="mailto:">
- </HEAD>
-
- <BODY>
- <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
- <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
- <STRONG><P CLASS=block> Tk::Event - ToolKit for Events</P></STRONG>
- </TD></TR>
- </TABLE>
-
- <A NAME="__index__"></A>
- <!-- INDEX BEGIN -->
-
- <UL>
-
- <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
-
- <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
- <LI><A HREF="#description">DESCRIPTION</A></LI>
- </UL>
- <!-- INDEX END -->
-
- <HR>
- <P>
- <H1><A NAME="name">NAME</A></H1>
- <P>Tk::Event - ToolKit for Events</P>
- <P>
- <HR>
- <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
- <UL>
- <LI>Linux</LI>
- <LI>Solaris</LI>
- <LI>Windows</LI>
- </UL>
- <HR>
- <H1><A NAME="synopsis">SYNOPSIS</A></H1>
- <PRE>
-
- use Tk::Event;</PRE>
- <PRE>
- Tk::Event->fileevent(\*FH, 'readable' => callback);</PRE>
- <PRE>
- Tk::Event->lineavail(\*FH, callback);</PRE>
- <PRE>
- use Tk::Event::Signal qw(INT);</PRE>
- <PRE>
- $SIG{'INT'} = callback;</PRE>
- <PRE>
- use Tk::Event::process;</PRE>
- <PRE>
- Tk::Event->proc($pid, callback);</PRE>
- <PRE>
- QueueEvent(callback [, position])</PRE>
- <P>
- <HR>
- <H1><A NAME="description">DESCRIPTION</A></H1>
- <P>That is better than nothing but still hard to use. Most scripts want higher
- level result (a line, a ``block'' of data etc.)</P>
- <P>So it has occured to me that we could use new-ish TIEHANDLE thus:</P>
- <P>my $obj = tie SOMEHANDLE,Tk::Event::IO;</P>
- <P>while (<SOMEHANDLE>)
- {
- }</P>
- <P>Then the READLINE routine registers a callback and looks something like:</P>
- <P>sub READLINE
- {
- my $obj = shift;
- Event->io(*$obj,'readable',sub { <A HREF="../../../lib/Pod/perlfunc.html#item_sysread"><CODE>sysread(*$obj,${*$obj},1,length(${*$obj})</CODE></A> });
- my $pos;
- while (($pos = <A HREF="../../../lib/Pod/perlfunc.html#item_index"><CODE>index(${*$obj},$/)</CODE></A> < 0)
- {
- DoOneEvent();
- }
- Event->io(*$obj,'readable',''); # unregister
- $pos += length($/);
- my $result = substr(${*$obj},0,$pos);
- <A HREF="../../../lib/Pod/perlfunc.html#item_substr"><CODE>substr(${*$obj},0,$pos)</CODE></A> = '';
- return $result;
- }</P>
- <P>This is using the scalar part of the glob representing the _inner_ IO
- as a buffer in which to accumulate chars.</P>
- <P></P>
- <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
- <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
- <STRONG><P CLASS=block> Tk::Event - ToolKit for Events</P></STRONG>
- </TD></TR>
- </TABLE>
-
- </BODY>
-
- </HTML>
-