errno自体がもともと、Cのレベルでそうした処理が必要。 これを忘れると、他のモジュール内で発生した(しかし理由があって故意にスルーした)errnoなどがクリアされずに残っていて、自分で呼んだシステムコールは正常なのに、errnoが残っている為、$!がセットされているように見える場合が有る。 errnoの判定が必要なシステムコールの呼び出し前には、errnoクリア。これは、CもPerlも同じようである。