use File::MimeInfo::Magic; my $mime_type = mimetype($file);
Magic data is hashed when you need it for the first time. If you want to force hashing earlier use the "rehash()" function.
This method bundles "inodetype()", "globs()" and "magic()".
Magic rules with an priority of 80 and higher are checked before "globs()" is called, all other magic rules afterwards.
If this doesn't work the file is read and the mime-type defaults to 'text/plain' or to 'application/octet-stream' when the first ten chars of the file match ascii control chars (white spaces excluded). If the file doesn't exist or isn't readable "undef" is returned.
If $file is an object reference only "magic" and the default method are used. See below for details.
$file can be an object reference, in that case it is supposed to have a "seek()" and a "read()" method. This allows you for example to determine the mimetype of data in memory by using IO::Scalar.
Be aware that when using a filehandle or an "IO::" object you need to set the ":utf8" binmode yourself if appropriate.
If you want to by-pass the XDG basedir system you can specify your database directories by setting @File::MimeInfo::DIRS. But normally it is better to change the XDG basedir environment variables.