>>18
テキストファイルの行は 任意長の文字列 + (改行 or EOF) になる
利便性からそれに合わせて$は改行直前とEOFにマッチする
件の "hoge\n" は "hoge" + 改行 と "" + EOF の2行
2行だから2回マッチする、自然だろ?

>>28
動的言語の静的チェックは面倒で誰も手を出してくれない
PHPUnitのコードカバレッジ率見てニヤニヤするのが一番でしょう