# perldoc > File::Type

## NAME
    [File::Type](https://www.chedong.com/phpMan.php/perldoc/File%3A%3AType/markdown) - determine file type using magic

## SYNOPSIS
        my $ft = [File::Type](https://www.chedong.com/phpMan.php/perldoc/File%3A%3AType/markdown)->new();

        # read in data from file to $data, then
        my $type_from_data = $ft->checktype_contents($data);

        # alternatively, check file from disk
        my $type_from_file = $ft->checktype_filename($file);

        # convenient method for checking either a file or data
        my $type_1 = $ft->mime_type($file);
        my $type_2 = $ft->mime_type($data);

## DESCRIPTION
    [File::Type](https://www.chedong.com/phpMan.php/perldoc/File%3A%3AType/markdown) uses magic numbers (typically at the start of a file) to determine the MIME type of
    that file.

    [File::Type](https://www.chedong.com/phpMan.php/perldoc/File%3A%3AType/markdown) can use either a filename, or file contents, to determine the type of a file.

## METHODS
  new
    Returns a new [File::Type](https://www.chedong.com/phpMan.php/perldoc/File%3A%3AType/markdown) object.

  mime_type($argument)
    Takes either data or a filename, determines what it is, and passes the argument through to the
    relevant method below. If the argument is a directory, returns undef.

  checktype_filename($filename)
    Opens $filename (if possible; if not, returns undef) and returns the MIME type of the file.

  checktype_contents($data)
    Matches $data against the magic database criteria and returns the MIME type of the file.

## TODO
        * Add additional magic match criteria

## BUGS
    None known.

  NOTES
    Some magic definitions in the mime-magic file used in the creation of this module vary from
    those in other apps (eg image/x-png not image/png).

## SEE ALSO
    [File::MMagic](https://www.chedong.com/phpMan.php/perldoc/File%3A%3AMMagic/markdown) and [File::MimeInfo](https://www.chedong.com/phpMan.php/perldoc/File%3A%3AMimeInfo/markdown) perform the same job, but have a number of problems that led to
    the creation of this module.

    [File::MMagic](https://www.chedong.com/phpMan.php/perldoc/File%3A%3AMMagic/markdown) inlines a copy of the magic database, and uses a DATA filehandle, which causes
    problems when running under mod_perl.

    [File::MimeInfo](https://www.chedong.com/phpMan.php/perldoc/File%3A%3AMimeInfo/markdown) uses an external magic file, and relies on file extensions rather than magic to
    determine the mime type.

    As a result, [File::Type](https://www.chedong.com/phpMan.php/perldoc/File%3A%3AType/markdown) uses a separate module and script to create the code at the core of this
    module, which means that there is no need to include a magic database at all, and that it is
    safe to run under mod_perl.

    [File::Type::Builder](https://www.chedong.com/phpMan.php/perldoc/File%3A%3AType%3A%3ABuilder/markdown), which generates the code at the heart of this module.

## ACKNOWLEDGMENTS
    [File::Type](https://www.chedong.com/phpMan.php/perldoc/File%3A%3AType/markdown) is built from a mime-magic file from cleancode.org. The original can be found at
    <<http://cleancode.org/cgi-bin/viewcvs.cgi/email/mime-magic.mime?rev=1.1.1.1>>.

## AUTHOR
    Paul Mison <<pmison@fotango.com>>

## COPYRIGHT
    Copyright 2003-2004 Fotango Ltd.

## LICENSE
    Licensed under the same terms as Perl itself.

