slurp takes:
* a filename,
* a filehandle,
* a typeglob reference,
* an IO::File object, or
* a scalar reference,
converts it to an input stream if necessary, and reads in the entire
stream. If slurp fails to set up or read the stream, it throws an
exception.