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">-&gt;</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">=&gt;</span> <span class="variable">callback</span><span class="operator">);</span>
</pre>
<pre>
 <span class="variable">Tk::Event</span><span class="operator">-&gt;</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">-&gt;</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 &quot;block&quot; 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 (&lt;SOMEHANDLE&gt;)
 {
 }</p>
<p>Then the READLINE routine registers a callback and looks something like:</p>
<p>sub READLINE
 {
  my $obj = shift;
  Event-&gt;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> &lt; 0)
   {
    DoOneEvent();
   }
  Event-&gt;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 + -
显示快捷键?