MIME::Type - description of one MIME type
 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'
MIME types are used in MIME entities, for instance as part of
    e-mail and HTTP traffic. Sometimes real knowledge about a mime-type is need.
    Objects of "MIME::Type" store the
    information on one such type.
  - 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.
 
  - 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
    
   
  - MIME::Type->new(%options)
 
  - Create (instantiate) a new MIME::Type object which manages one mime
      type.
    
    
 -Option    --Default
  charset     undef
  encoding    <depends on type>
  extensions  []
  simplified  <derived from type>
  system      undef
  type        <required>
    
   
  - charset =>
    $charset
 
  - Specify the default charset for this type.
 
  - 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.
 
 
  - $obj->charset()
 
  - [2.28] RFC6657 prescribes that IANA registrations for text category types
      explicitly state their default character-set. MIME-Types contains a
      manually produced list of these defaults.
    
This method may also return
        "_REQUIRED", when there is no default,
        or "_FRAMED" when the charset is
        determined by the content.
   
  - $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'
 
  - $obj->defaultCharset()
 
  - As per RFC6657, all "text/*" types must
      either specify a default charset in its IANA registration, or require the
      charset parameter. Non-text types may require a charset as well.
    
It is hard to extract this information from the IANA
        registration files automagically, so is manually maintained.
   
  - $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'.
 
This module is part of MIME-Types distribution version 2.28, built
    on April 18, 2025. Website: http://perl.overmeer.net/CPAN/
Copyrights 1999-2025 by [Mark Overmeer <mark@overmeer.net>].
    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/