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.
