{
    "content": [
        {
            "type": "text",
            "text": "# Exporter::Tiny::Manual::Etc (perldoc)\n\n## NAME\n\nExporter::Tiny::Manual::Etc - odds and ends\n\n## Sections\n\n- **NAME**\n- **DESCRIPTION** (3 subsections)\n- **SEE ALSO**\n- **AUTHOR**\n- **COPYRIGHT AND LICENCE**\n- **DISCLAIMER OF WARRANTIES**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "Exporter::Tiny::Manual::Etc",
        "section": "",
        "mode": "perldoc",
        "summary": "Exporter::Tiny::Manual::Etc - odds and ends",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 1,
                "subsections": [
                    {
                        "name": "Utility Functions",
                        "lines": 12
                    },
                    {
                        "name": "History",
                        "lines": 22
                    },
                    {
                        "name": "Obligatory Exporter Comparison",
                        "lines": 50
                    }
                ]
            },
            {
                "name": "SEE ALSO",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "AUTHOR",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "COPYRIGHT AND LICENCE",
                "lines": 5,
                "subsections": []
            },
            {
                "name": "DISCLAIMER OF WARRANTIES",
                "lines": 4,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "Exporter::Tiny::Manual::Etc - odds and ends\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "",
                "subsections": [
                    {
                        "name": "Utility Functions",
                        "content": "Exporter::Tiny is itself an exporter!\n\nThese functions are really for internal use, but can be exported if you need them:\n\n\"mkopt(\\@array)\"\nSimilar to \"mkopt\" from Data::OptList. It doesn't support all the fancy options that\nData::OptList does (\"moniker\", \"requireunique\", \"mustbe\" and \"nametest\") but runs about\n50% faster.\n\n\"mkopthash(\\@array)\"\nSimilar to \"mkopthash\" from Data::OptList. See also \"mkopt\".\n"
                    },
                    {
                        "name": "History",
                        "content": "Type::Library had a bunch of custom exporting code which poked coderefs into its caller's stash.\nIt needed this to be something more powerful than most exporters so that it could switch between\nexporting Moose, Mouse and Moo-compatible objects on request. Sub::Exporter would have been\ncapable, but had too many dependencies for the Type::Tiny project.\n\nMeanwhile Type::Utils, Types::TypeTiny and Test::TypeTiny each used the venerable Exporter.pm.\nHowever, this meant they were unable to use the features like Sub::Exporter-style function\nrenaming which I'd built into Type::Library:\n\n## import \"Str\" but rename it to \"String\".\nuse Types::Standard \"Str\" => { -as => \"String\" };\n\nAnd so I decided to factor out code that could be shared by all Type-Tiny's exporters into a\nsingle place: Exporter::TypeTiny.\n\nAs of version 0.026, Exporter::TypeTiny was also made available as Exporter::Tiny, distributed\nindependently on CPAN. CHOCOLATEBOY had convinced me that it was mature enough to live a life of\nits own.\n\nAs of version 0.030, Type-Tiny depends on Exporter::Tiny and Exporter::TypeTiny is being phased\nout.\n"
                    },
                    {
                        "name": "Obligatory Exporter Comparison",
                        "content": "Exporting is unlikely to be your application's performance bottleneck, but nonetheless here are\nsome comparisons.\n\nComparative sizes according to Devel::SizeMe:\n\nExporter                     217.1Kb\nSub::Exporter::Progressive   263.2Kb\nExporter::Tiny               267.7Kb\nExporter + Exporter::Heavy   281.5Kb\nExporter::Renaming           406.2Kb\nSub::Exporter                701.0Kb\n\nPerformance exporting a single sub:\n\nRate     SubExp    ExpTiny SubExpProg      ExpPM\nSubExp      2489/s         --       -56%       -85%       -88%\nExpTiny     5635/s       126%         --       -67%       -72%\nSubExpProg 16905/s       579%       200%         --       -16%\nExpPM      20097/s       707%       257%        19%         --\n\n(Exporter::Renaming globally changes the behaviour of Exporter.pm, so could not be included in\nthe same benchmarks.)\n\n(Non-Core) Dependencies:\n\nExporter                    -1\nExporter::Renaming           0\nExporter::Tiny               0\nSub::Exporter::Progressive   0\nSub::Exporter                3\n\nFeatures:\n\nExpPM   ExpTiny SubExp  SubExpProg\nCan export code symbols............. Yes     Yes     Yes     Yes\nCan export non-code symbols......... Yes     Yes\nGroups/tags......................... Yes     Yes     Yes     Yes\nExport by regexp.................... Yes     Yes\nBang prefix......................... Yes     Yes\nAllows renaming of subs.............         Yes     Yes     Maybe\nInstall code into scalar refs.......         Yes     Yes     Maybe\nCan be passed an \"into\" parameter...         Yes     Yes     Maybe\nCan be passed an \"installer\" sub....         Yes     Yes     Maybe\nConfig avoids package variables.....                 Yes\nSupports generators.................         Yes     Yes\nSane API for generators.............         Yes     Yes\nUnimport............................         Yes\n\n(Certain Sub::Exporter::Progressive features are only available if Sub::Exporter is installed.)\n"
                    }
                ]
            },
            "SEE ALSO": {
                "content": "Exporter::Shiny, Exporter::Tiny.\n",
                "subsections": []
            },
            "AUTHOR": {
                "content": "Toby Inkster <tobyink@cpan.org>.\n",
                "subsections": []
            },
            "COPYRIGHT AND LICENCE": {
                "content": "This software is copyright (c) 2013-2014, 2017 by Toby Inkster.\n\nThis is free software; you can redistribute it and/or modify it under the same terms as the Perl\n5 programming language system itself.\n",
                "subsections": []
            },
            "DISCLAIMER OF WARRANTIES": {
                "content": "THIS PACKAGE IS PROVIDED \"AS IS\" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,\nWITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.\n",
                "subsections": []
            }
        }
    }
}