PHPで嵌まる
PerlやPHPはレガシーだという考えだけど、ちょいと気楽に書くのには楽。で、
$f=fopen('filename','r); while( !feof($f) ) { 。。。 }
というコードで、ファイルが存在しないときに、fopenがエラーのため $f がFALSE になって、それを引数にしている feof もエラーになって FALSE。while 条件はそれを ! しているため TRUE になって無限ループ発生。
ちゃんとエラーチェックしないからだという突っ込みがあるでしょうが、実はしてました。
$f=fopen('filename','r) or dir('fopen');
いや、しているつもりでした。d i と打つと、その次はつい r と打ってしまう。
opendirのエラーメッセージが出たので原因にはすぐ気づいたんだけど、そのときは遅し。これからは die じゃなくて exit と書くことにしよう。
feof()を使うのは、リファレンスの fgets() のところにあるサンプルに倣ったのだけど、
while( $line=fgetss($f,99) ) {
にすればよかったのかな?入力文字が 0 だったりすると駄目かと思ったけど、改行がくっつくので、「ファイルの最後の行が0でその後に改行が無い」という通常は心配しないケースを除けばOKかな?と思ったけど、
<tag>0<tag2 >1<tag3>
のようなケースがあると駄目。と、ここで気づいたけど、fgetss()ってタグの途中で改行があると駄目なのか。