eventloop.html
来自「perl教程」· HTML 代码 · 共 97 行
HTML
97 行
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../displayToc.js"></script>
<script language="JavaScript" src="../../tocParas.js"></script>
<script language="JavaScript" src="../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../scineplex.css">
<title>Tk::Event - ToolKit for Events</title>
<link rel="stylesheet" href="../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>
<body>
<script>writelinks('__top__',2);</script>
<h1><a>Tk::Event - ToolKit for Events</a></h1>
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
<li><a href="#name">NAME</a></li>
<li><a href="#synopsis">SYNOPSIS</a></li>
<li><a href="#description">DESCRIPTION</a></li>
</ul>
<!-- INDEX END -->
<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>Tk::Event - ToolKit for Events</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
<span class="keyword">use</span> <span class="variable">Tk::Event</span><span class="operator">;</span>
</pre>
<pre>
<span class="variable">Tk::Event</span><span class="operator">-></span><span class="variable">fileevent</span><span class="operator">(\</span><span class="variable">*FH</span><span class="operator">,</span> <span class="string">'readable'</span> <span class="operator">=></span> <span class="variable">callback</span><span class="operator">);</span>
</pre>
<pre>
<span class="variable">Tk::Event</span><span class="operator">-></span><span class="variable">lineavail</span><span class="operator">(\</span><span class="variable">*FH</span><span class="operator">,</span> <span class="variable">callback</span><span class="operator">);</span>
</pre>
<pre>
<span class="keyword">use</span> <span class="variable">Tk::Event::Signal</span> <span class="string">qw(INT)</span><span class="operator">;</span>
</pre>
<pre>
<span class="variable">$SIG</span><span class="operator">{</span><span class="string">'INT'</span><span class="operator">}</span> <span class="operator">=</span> <span class="variable">callback</span><span class="operator">;</span>
</pre>
<pre>
<span class="keyword">use</span> <span class="variable">Tk::Event::process</span><span class="operator">;</span>
</pre>
<pre>
<span class="variable">Tk::Event</span><span class="operator">-></span><span class="variable">proc</span><span class="operator">(</span><span class="variable">$pid</span><span class="operator">,</span> <span class="variable">callback</span><span class="operator">);</span>
</pre>
<pre>
QueueEvent(callback [, position])</pre>
<p>
</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/perlvar.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>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?