Use croak for error handling.
be more careful in how we describe our bad argument
can basename really return undef??

at anyrate, it could return "0" for a file named that!
if that happens, do not die
use autovivified file handle!

no reason to act like we support 5.5

because we do not
use Test::Fatal, not Test::Exception
Merge use of exception
Fix alignment of parens
v0.010

        - in case of failure, throw exceptions rather than returning undef