{
    "content": [
        {
            "type": "text",
            "text": "# Mail::Box::Parser::Perl (perldoc)\n\n## NAME\n\nMail::Box::Parser::Perl - reading messages from file using Perl\n\n## DESCRIPTION\n\nThe \"Mail::Box::Parser::Perl\" implements parsing of messages in Perl. This may be a little\nslower than the \"C\" based parser Mail::Box::Parser::C, but will also work on platforms where no\nC compiler is available.\n\n## Sections\n\n- **NAME**\n- **INHERITANCE**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **METHODS** (6 subsections)\n- **DIAGNOSTICS**\n- **SEE ALSO**\n- **LICENSE**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "Mail::Box::Parser::Perl",
        "section": "",
        "mode": "perldoc",
        "summary": "Mail::Box::Parser::Perl - reading messages from file using Perl",
        "synopsis": "",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "INHERITANCE",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 1,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 6,
                "subsections": []
            },
            {
                "name": "METHODS",
                "lines": 2,
                "subsections": [
                    {
                        "name": "Constructors",
                        "lines": 26
                    },
                    {
                        "name": "The parser",
                        "lines": 26
                    },
                    {
                        "name": "Parsing",
                        "lines": 30
                    },
                    {
                        "name": "Internals",
                        "lines": 15
                    },
                    {
                        "name": "Error handling",
                        "lines": 41
                    },
                    {
                        "name": "Cleanup",
                        "lines": 5
                    }
                ]
            },
            {
                "name": "DIAGNOSTICS",
                "lines": 27,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "LICENSE",
                "lines": 5,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "Mail::Box::Parser::Perl - reading messages from file using Perl\n",
                "subsections": []
            },
            "INHERITANCE": {
                "content": "Mail::Box::Parser::Perl\nis a Mail::Box::Parser\nis a Mail::Reporter\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "The \"Mail::Box::Parser::Perl\" implements parsing of messages in Perl. This may be a little\nslower than the \"C\" based parser Mail::Box::Parser::C, but will also work on platforms where no\nC compiler is available.\n\nExtends \"DESCRIPTION\" in Mail::Box::Parser.\n",
                "subsections": []
            },
            "METHODS": {
                "content": "Extends \"METHODS\" in Mail::Box::Parser.\n",
                "subsections": [
                    {
                        "name": "Constructors",
                        "content": "Extends \"Constructors\" in Mail::Box::Parser.\n\nMail::Box::Parser::Perl->new(%options)\n-Option           --Defined in       --Default\nfile               Mail::Box::Parser  undef\nfilename           Mail::Box::Parser  <required>\nfixheadererrors                     <false>\nlog                Mail::Reporter     'WARNINGS'\nmode               Mail::Box::Parser  'r'\ntrace              Mail::Reporter     'WARNINGS'\ntrusted                               <false>\n\nfile => FILE-HANDLE\nfilename => FILENAME\nfixheadererrors => BOOLEAN\nWhen header errors are detected, the parsing of the header will be stopped. Other header\nlines will become part of the body of the message. Set this flag to have the erroneous\nline added to the previous header line.\n\nlog => LEVEL\nmode => OPENMODE\ntrace => LEVEL\ntrusted => BOOLEAN\nIs the input from the file to be trusted, or does it require extra tests. Related to\nMail::Box::new(trusted).\n"
                    },
                    {
                        "name": "The parser",
                        "content": "Extends \"The parser\" in Mail::Box::Parser.\n\n$obj->fileChanged()\nInherited, see \"The parser\" in Mail::Box::Parser\n\n$obj->filename()\nInherited, see \"The parser\" in Mail::Box::Parser\n\n$obj->fixHeaderErrors( [BOOLEAN] )\nIf set to \"true\", parsing of a header will not stop on an error, but attempt to add the\nerroneous this line to previous field. Without BOOLEAN, the current setting is returned.\n\nexample:\n\n$folder->parser->fixHeaderErrors(1);\nmy $folder = $mgr->open('folder', fixheadererrors => 1);\n\n$obj->restart()\nInherited, see \"The parser\" in Mail::Box::Parser\n\n$obj->start(%options)\nInherited, see \"The parser\" in Mail::Box::Parser\n\n$obj->stop()\nInherited, see \"The parser\" in Mail::Box::Parser\n"
                    },
                    {
                        "name": "Parsing",
                        "content": "Extends \"Parsing\" in Mail::Box::Parser.\n\n$obj->bodyAsFile( $fh [$chars, [$lines]] )\nInherited, see \"Parsing\" in Mail::Box::Parser\n\n$obj->bodyAsList( [$chars, [$lines]] )\nInherited, see \"Parsing\" in Mail::Box::Parser\n\n$obj->bodyAsString( [$chars, [$lines]] )\nInherited, see \"Parsing\" in Mail::Box::Parser\n\n$obj->bodyDelayed( [$chars, [$lines]] )\nInherited, see \"Parsing\" in Mail::Box::Parser\n\n$obj->filePosition( [$position] )\nInherited, see \"Parsing\" in Mail::Box::Parser\n\n$obj->lineSeparator()\nInherited, see \"Parsing\" in Mail::Box::Parser\n\n$obj->popSeparator()\nInherited, see \"Parsing\" in Mail::Box::Parser\n\n$obj->pushSeparator(STRING|Regexp)\nInherited, see \"Parsing\" in Mail::Box::Parser\n\n$obj->readHeader()\n$obj->readSeparator(%options)\nInherited, see \"Parsing\" in Mail::Box::Parser\n"
                    },
                    {
                        "name": "Internals",
                        "content": "Extends \"Internals\" in Mail::Box::Parser.\n\n$obj->closeFile()\nInherited, see \"Internals\" in Mail::Box::Parser\n\n$obj->defaultParserType( [$class] )\nMail::Box::Parser::Perl->defaultParserType( [$class] )\nInherited, see \"Internals\" in Mail::Box::Parser\n\n$obj->openFile($args)\nInherited, see \"Internals\" in Mail::Box::Parser\n\n$obj->takeFileInfo()\nInherited, see \"Internals\" in Mail::Box::Parser\n"
                    },
                    {
                        "name": "Error handling",
                        "content": "Extends \"Error handling\" in Mail::Box::Parser.\n\n$obj->AUTOLOAD()\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->addReport($object)\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->defaultTrace( [$level]|[$loglevel, $tracelevel]|[$level, $callback] )\nMail::Box::Parser::Perl->defaultTrace( [$level]|[$loglevel, $tracelevel]|[$level, $callback] )\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->errors()\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->log( [$level, [$strings]] )\nMail::Box::Parser::Perl->log( [$level, [$strings]] )\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->logPriority($level)\nMail::Box::Parser::Perl->logPriority($level)\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->logSettings()\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->notImplemented()\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->report( [$level] )\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->reportAll( [$level] )\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->trace( [$level] )\nInherited, see \"Error handling\" in Mail::Reporter\n\n$obj->warnings()\nInherited, see \"Error handling\" in Mail::Reporter\n"
                    },
                    {
                        "name": "Cleanup",
                        "content": "Extends \"Cleanup\" in Mail::Box::Parser.\n\n$obj->DESTROY()\nInherited, see \"Cleanup\" in Mail::Reporter\n"
                    }
                ]
            },
            "DIAGNOSTICS": {
                "content": "Warning: File $filename changed during access.\nWhen a message parser starts working, it takes size and modification time of the file at\nhand. If the folder is written, it checks whether there were changes in the file made by\nexternal programs.\n\nCalling Mail::Box::update() on a folder before it being closed will read these new messages.\nBut the real source of this problem is locking: some external program (for instance the mail\ntransfer agent, like sendmail) uses a different locking mechanism as you do and therefore\nviolates your rights.\n\nError: Package $package does not implement $method.\nFatal error: the specific package (or one of its superclasses) does not implement this\nmethod where it should. This message means that some other related classes do implement this\nmethod however the class at hand does not. Probably you should investigate this and probably\ninform the author of the package.\n\nWarning: Unexpected end of header in $source: $line\nWhile parsing a message from the specified source (usually a file name), the parser found a\nsyntax error. According to the MIME specification in the RFCs, each header line must either\ncontain a colon, or start with a blank to indicate a folded field. Apparently, this header\ncontains a line which starts on the first position, but not with a field name.\n\nBy default, parsing of the header will be stopped. If there are more header lines after the\nerroneous line, they will be added to the body of the message. In case of new(fixheaders)\nset, the parsing of the header will be continued. The erroneous line will be added to the\npreceding field.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "This module is part of Mail-Message distribution version 3.012, built on February 11, 2022.\nWebsite: http://perl.overmeer.net/CPAN/\n",
                "subsections": []
            },
            "LICENSE": {
                "content": "Copyrights 2001-2022 by [Mark Overmeer <markov@cpan.org>]. For other contributors see ChangeLog.\n\nThis program is free software; you can redistribute it and/or modify it under the same terms as\nPerl itself. See http://dev.perl.org/licenses/\n",
                "subsections": []
            }
        }
    }
}