@@ -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 "> <-</ span > < span class ="n "> getArgs</ span >
191+ < span class ="n "> h</ span > < span class ="ow "> <-</ 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 "> <-</ 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 "> >></ 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 "> <-</ 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 >
0 commit comments