# MIME::Type - description of one MIME type - perldoc - [phpMan]

## NAME
    [MIME::Type](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3AType/markdown) - description of one MIME type

## SYNOPSIS
     use [MIME::Types](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3ATypes/markdown);
     my $mimetypes = [MIME::Types](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3ATypes/markdown)->new;
     my [MIME::Type](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3AType/markdown) $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](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3AType/markdown)->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
    real knowledge about a mime-type is need. Objects of "[MIME::Type](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3AType/markdown)" store the information on one
    such type.

## OVERLOADED
    overload: string comparison
        When a [MIME::Type](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3AType/markdown) object is compared to either a string or another [MIME::Type](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3AType/markdown), 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](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3AType/markdown)->new('text/html');
         print "$mime\n";   # explicit stringification
         print $mime;       # implicit stringification

## METHODS
### Initiation
    [MIME::Type](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3AType/markdown)->new(%options)
        Create (*instantiate*) a new [MIME::Type](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3AType/markdown) 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](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3AType/markdown)->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](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3AType/markdown)->new(type => 'x-appl/x-zip');
         print $mime->simplified;                     # 'appl/zip'

         print $mime->simplified('text/PLAIN');       # 'text/plain'
         print [MIME::Type](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3AType/markdown)->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](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3AType/markdown) object is created, the type itself must be specified with the "type"
        option flag.

## 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/>

