File::Type(3)

πŸ’– NAME πŸ’–

okay so bestie, welcome to File::Type(3) ✨ β€” the manual page for a module whose whole thing is determine file type using magic. Yes, actual magic numbers, not like birthday-party magic πŸŽ©πŸ¦‹.

✨ SYNOPSIS ✨

my $ft = File::Type->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 🌸

<s>No cap</s> no cap, File::Type uses magic numbers β€” typically at the start of a file β€” to determine the MIME type of that file. It's giving detective energy but for file vibes πŸ”βœ¨.

And it's flexible, bestie: File::Type can use either a filename, or file contents, to determine the type of a file. So whether you've got the whole file on disk or just the data in your hands, it's got you 🫢.

πŸŽ€ METHODS πŸŽ€

🐣 new

Returns a new File::Type object. Fresh object, fresh vibes, literally iconic πŸ’….

πŸ’– 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, it returns undef β€” so yeah, directories get a lil "nope" πŸ™ˆ.

πŸ¦‹ checktype_filename($filename)

Opens $filename if possible; if not, it returns undef. Then it returns the MIME type of the file. So it's like "open the file, check the vibe, tell you the type" πŸ”₯.

🌈 checktype_contents($data)

Matches $data against the magic database criteria and returns the MIME type of the file. Data goes in, MIME type comes out, periodt ✨.

πŸ”₯ TODO πŸ”₯

  • Add additional magic match criteria

πŸ’€ BUGS πŸ’€

None known. Not a single one, bestie β€” the bug list is literally empty 😭✨.

πŸ—’οΈ 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). So like, heads up: the naming tea is a little different in places πŸ‘€.

🌈 SEE ALSO 🌈

File::MMagic and File::MimeInfo perform the same job, but have a number of problems that led to the creation of this module. It's giving "we tried the other options and they were not it" πŸ’€.

File::MMagic inlines a copy of the magic database, and uses a DATA filehandle, which causes problems when running under mod_perl. Not the move, honestly.

File::MimeInfo uses an external magic file, and relies on file extensions rather than magic to determine the mime type. Extensions? When actual magic is right there? Cute but no πŸŽ€.

As a result, File::Type uses a seperate 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. Slay πŸ’…βœ¨.

File::Type::Builder, which generates the code at the heart of this module. Builder bestie πŸ› οΈπŸ«Ά.

🫢 ACKNOWLEDGMENTS 🫢

File::Type 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>. Credit where credit is due, always 🌸.

πŸ‘‘ AUTHOR πŸ‘‘

Paul Mison <pmison@fotango.com>

Copyright 2003-2004 Fotango Ltd.

🌸 LICENSE 🌸

Licensed under the same terms as Perl itself.


okay bestie, that's the whole page πŸ’– the footer says perl v5.42.0, dated 2010-11-30, and it's File::Type(3) signing off with main-character energy πŸ‘‘βœ¨πŸ’…

πŸ“¦ where this page comes from