MIME::Type(3)

๐Ÿ’– MIME::Type(3) ๐Ÿ’–

okay bestie, welcome to the MIME::Type page from the User Contributed Perl Documentation shelf ๐Ÿซถ this is the module that gives you a whole little object for one MIME type, and honestly itโ€™s lowkey iconic.

๐ŸŒธ NAME ๐ŸŒธ

MIME::Type โ€” description of one MIME type

โœจ SYNOPSIS โœจ

use MIME::Types;
my $mimetypes = MIME::Types->new;
my MIME::Type $plaintext = $mimetypes->type('text/plain');
print $plaintext->mediaType;   # text
print $plaintext->subType;     # plain

my @ext = $plaintext->extensions;
print "@ext"                   # txt asc c cc h hh cpp

print $plaintext->encoding     # 8bit
if($plaintext->isBinary)       # false
if($plaintext->isAscii)        # true
if($plaintext->equals('text/plain') {...}
if($plaintext eq 'text/plain') # same

print MIME::Type->simplified('x-appl/x-zip') #  'appl/zip'

๐Ÿ’ฌ DESCRIPTION ๐Ÿ’ฌ

MIME types are used in MIME entities, for instance as part of e-mail and HTTP traffic. Sometimes you actually need real knowledge about a mime-type, and thatโ€™s where this comes in. Objects of MIME::Type store the information on one such type. periodt ๐Ÿ’…

๐Ÿ” OVERLOADED ๐Ÿ”

overload: string comparison

When a MIME::Type object is compared to either a string or another MIME::Type, the equals() method is called. Comparison is smart, which means that it extends common string comparison with some features which are defined in the related RFCs. slay โœจ

overload: stringification

The stringification (use of the object in a place where a string is required) will result in the type name, the same as type() returns.

example: use of stringification

my $mime = MIME::Type->new('text/html');
print "$mime\n";   # explicit stringification
print $mime;       # implicit stringification

๐Ÿง  METHODS ๐Ÿง 

๐ŸŒฑ Initiation ๐ŸŒฑ

MIME::Type->new(%options)

Create (instantiate) a new MIME::Type object which manages one mime type.

            -Option    --Default
             encoding    <depends on type>
             extensions  []
             simplified  <derived from type>
             system      undef
             type        <required>
  • encoding => '7bit'|'8bit'|'base64'|'quoted-printable' โ€” How must this data be encoded to be transported safely. The default depends on the type: mimes with as main type "text/" will default to "quoted-printable" and all other to "base64".
  • extensions => REF-ARRAY โ€” An array of extensions which are using this mime.
  • simplified => STRING โ€” The mime types main- and sub-label can both start with "x-", to indicate that is a non-registered name. Of course, after registration this flag can disappear which adds to the confusion. The simplified string has the "x-" thingies removed and are translated to lower-case.
  • system => REGEX โ€” Regular expression which defines for which systems this rule is valid. The REGEX is matched on $^O.
  • type => STRING โ€” The type which is defined here. It consists of a type and a sub-type, both case-insensitive. This module will return lower-case, but accept upper-case.

๐Ÿ’… Attributes ๐Ÿ’…

$obj->encoding()

Returns the type of encoding which is required to transport data of this type safely.

$obj->extensions()

Returns a list of extensions which are known to be used for this mime type.

$obj->simplified( [$string] ) / MIME::Type->simplified( [$string] )

Returns the simplified mime type for this object or the specified STRING. Mime type names can get officially registered. Until then, they have to carry an "x-" preamble to indicate that. Of course, after recognition, the "x-" can disappear. In many cases, we prefer the simplified version of the type.

example: results of simplified()

my $mime = MIME::Type->new(type => 'x-appl/x-zip');
print $mime->simplified;                     # 'appl/zip'

print $mime->simplified('text/PLAIN');       # 'text/plain'
print MIME::Type->simplified('x-xyz/x-abc'); # 'xyz/abc'

$obj->system()

Returns the regular expression which can be used to determine whether this type is active on the system where you are working on.

$obj->type()

Returns the long type of this object, for instance 'text/plain'

๐Ÿ”ฎ Knowledge ๐Ÿ”ฎ

  • $obj->equals($string|$mime) โ€” Compare this mime-type object with a STRING or other object. In case of a STRING, simplification will take place.
  • $obj->isAscii() โ€” Old name for isText().
  • $obj->isBinary() โ€” Returns true when the type is not known to be text. See isText().
  • $obj->isExperimental() โ€” [2.00] Return "true" when the type is defined for experimental use; the subtype starts with "x."
  • $obj->isPersonal() โ€” [2.00] Return "true" when the type is defined by a person for private use; the subtype starts with "prs."
  • $obj->isRegistered() โ€” Mime-types which are not registered by IANA nor defined in RFCs shall start with an "x-". This counts for as well the media-type as the sub-type. In case either one of the types starts with "x-" this method will return false.
  • $obj->isSignature() โ€” Returns true when the type is in the list of known signatures.
  • $obj->isText() โ€” [2.05] All types which may have the charset attribute, are text. However, there is currently no record of attributes in this module... so we guess.
  • $obj->isVendor() โ€” [2.00] Return "true" when the type is defined by a vendor; the subtype starts with "vnd."
  • $obj->mediaType() โ€” The media type of the simplified mime. For 'text/plain' it will return 'text'. For historical reasons, the 'mainType' method still can be used to retrieve the same value. However, that method is deprecated.
  • $obj->subType() โ€” The sub type of the simplified mime. For 'text/plain' it will return 'plain'.

๐Ÿšจ DIAGNOSTICS ๐Ÿšจ

Error: Type parameter is obligatory.

When a MIME::Type object is created, the type itself must be specified with the "type" option flag. donโ€™t forget it bestie ๐Ÿ˜ญ

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

This module is part of MIME-Types distribution version 2.26, built on February 06, 2024. Website: http://perl.overmeer.net/CPAN/

๐Ÿ“œ LICENSE ๐Ÿ“œ

Copyrights 1999-2024 by [Mark Overmeer <markov@cpan.org>]. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://dev.perl.org/licenses/


thatโ€™s the whole page, bestie ๐Ÿ’– brought to you by perl v5.42.0, dated 2024-03-08, for MIME::Type(3) ๐ŸŽ€โœจ

๐Ÿ“ฆ where this page comes from