Skip to content

Commit e2a92ec

Browse files
committed
add pleac 8.5
1 parent 39c47ca commit e2a92ec

File tree

4 files changed

+70
-1
lines changed

4 files changed

+70
-1
lines changed

pleac.html

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,27 @@ <h3>レシピ8.4 ファイルを行単位または段落単位で逆向きに読
179179
</div>
180180
<div class="section" id="id25">
181181
<h3>レシピ8.5 成長するファイルを追いかけながら読む<a class="headerlink" href="#id25" title="Permalink to this headline"></a></h3>
182+
<p><a class="reference external" href="http://docstore.mik.ua/orelly/perl/cookbook/ch08_06.htm">8.5. Trailing a Growing File</a></p>
183+
<p>ファイルハンドルがEOFだったらthreadDelayで一秒待ってループ。そうじゃな
184+
かったら文字を読み込んで出力</p>
185+
<div class="highlight-haskell"><div class="highlight"><pre><span class="kr">import</span> <span class="nn">System.IO</span>
186+
<span class="kr">import</span> <span class="nn">System.Environment</span>
187+
<span class="kr">import</span> <span class="nn">Control.Concurrent</span>
188+
189+
<span class="nf">main</span> <span class="ow">=</span> <span class="kr">do</span>
190+
<span class="n">args</span> <span class="ow">&lt;-</span> <span class="n">getArgs</span>
191+
<span class="n">h</span> <span class="ow">&lt;-</span> <span class="n">openFile</span> <span class="p">(</span><span class="n">args</span><span class="o">!!</span><span class="mi">0</span><span class="p">)</span> <span class="kt">ReadMode</span>
192+
<span class="n">loop</span> <span class="n">h</span>
193+
<span class="kr">where</span> <span class="n">loop</span> <span class="n">h</span> <span class="ow">=</span> <span class="kr">do</span>
194+
<span class="n">end</span> <span class="ow">&lt;-</span> <span class="n">hIsEOF</span> <span class="n">h</span>
195+
<span class="kr">if</span> <span class="n">end</span> <span class="kr">then</span> <span class="p">(</span><span class="n">threadDelay</span> <span class="mi">1000000</span><span class="p">)</span> <span class="o">&gt;&gt;</span> <span class="n">loop</span> <span class="n">h</span>
196+
<span class="kr">else</span> <span class="kr">do</span>
197+
<span class="n">c</span> <span class="ow">&lt;-</span> <span class="n">hGetChar</span> <span class="n">h</span>
198+
<span class="n">putChar</span> <span class="n">c</span>
199+
<span class="n">hFlush</span> <span class="n">stdout</span>
200+
<span class="n">loop</span> <span class="n">h</span>
201+
</pre></div>
202+
</div>
182203
</div>
183204
<div class="section" id="id26">
184205
<h3>レシピ8.6 ファイルから行をランダムに取り出す<a class="headerlink" href="#id26" title="Permalink to this headline"></a></h3>

pleac.rst

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,30 @@ words関数で単語のリストに分解してmapすればいい。
143143
レシピ8.5 成長するファイルを追いかけながら読む
144144
-----------------------------------------------
145145

146+
`8.5. Trailing a Growing File <http://docstore.mik.ua/orelly/perl/cookbook/ch08_06.htm>`_
147+
148+
ファイルハンドルがEOFだったらthreadDelayで一秒待ってループ。そうじゃな
149+
かったら文字を読み込んで出力
150+
151+
.. code-block:: haskell
152+
153+
import System.IO
154+
import System.Environment
155+
import Control.Concurrent
156+
157+
main = do
158+
args <- getArgs
159+
h <- openFile (args!!0) ReadMode
160+
loop h
161+
where loop h = do
162+
end <- hIsEOF h
163+
if end then (threadDelay 1000000) >> loop h
164+
else do
165+
c <- hGetChar h
166+
putChar c
167+
hFlush stdout
168+
loop h
169+
146170
レシピ8.6 ファイルから行をランダムに取り出す
147171
---------------------------------------------
148172

searchindex.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sources/pleac.txt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,30 @@ words関数で単語のリストに分解してmapすればいい。
143143
レシピ8.5 成長するファイルを追いかけながら読む
144144
-----------------------------------------------
145145

146+
`8.5. Trailing a Growing File <http://docstore.mik.ua/orelly/perl/cookbook/ch08_06.htm>`_
147+
148+
ファイルハンドルがEOFだったらthreadDelayで一秒待ってループ。そうじゃな
149+
かったら文字を読み込んで出力
150+
151+
.. code-block:: haskell
152+
153+
import System.IO
154+
import System.Environment
155+
import Control.Concurrent
156+
157+
main = do
158+
args <- getArgs
159+
h <- openFile (args!!0) ReadMode
160+
loop h
161+
where loop h = do
162+
end <- hIsEOF h
163+
if end then (threadDelay 1000000) >> loop h
164+
else do
165+
c <- hGetChar h
166+
putChar c
167+
hFlush stdout
168+
loop h
169+
146170
レシピ8.6 ファイルから行をランダムに取り出す
147171
---------------------------------------------
148172

0 commit comments

Comments
 (0)