The error/warning system, especially file i/o, should use `Try{}Catch{}` rather than `if(!$?)`. This would clean up the code quite a bit.