{
    "content": [
        {
            "type": "text",
            "text": "# CGI::Untaint::object (perldoc)\n\n## NAME\n\nCGI::Untaint::object - base class for Input Handlers\n\n## SYNOPSIS\n\npackage MyUntaint::foo;\nuse base 'CGI::Untaint::object';\nsub untaintre {\nreturn qr/$yourregex/;\n}\nsub isvalid {\nmy $self = shift;\nreturn isok($self->value);\n}\n1;\n\n## DESCRIPTION\n\nThis is the base class that all Untaint objects should inherit from.\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **METHODS TO SUBCLASS**\n- **METHODS TO CALL**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "CGI::Untaint::object",
        "section": "",
        "mode": "perldoc",
        "summary": "CGI::Untaint::object - base class for Input Handlers",
        "synopsis": "package MyUntaint::foo;\nuse base 'CGI::Untaint::object';\nsub untaintre {\nreturn qr/$yourregex/;\n}\nsub isvalid {\nmy $self = shift;\nreturn isok($self->value);\n}\n1;",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 15,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "METHODS TO SUBCLASS",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "METHODS TO CALL",
                "lines": 12,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "CGI::Untaint::object - base class for Input Handlers\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "package MyUntaint::foo;\n\nuse base 'CGI::Untaint::object';\n\nsub untaintre {\nreturn qr/$yourregex/;\n}\n\nsub isvalid {\nmy $self = shift;\nreturn isok($self->value);\n}\n\n1;\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "This is the base class that all Untaint objects should inherit from.\n",
                "subsections": []
            },
            "METHODS TO SUBCLASS": {
                "content": "isvalid / untaintre\nYour subclass should either provide a regular expression in untaintre (and yes, I should\nreally make this public), or an entire isvalid method.\n",
                "subsections": []
            },
            "METHODS TO CALL": {
                "content": "value\nThis should really have been two methods, but too many other modules now rely on the fact that\nthis does double duty. As an accessor, this is the 'raw' value. As a mutator it's the extracted\none.\n\nreall / renone\nRegular expressions to match anything, or nothing, untained. These should only be used if you\nhave already validated your entry in some way that means you completely trust the data.\n\nuntainted\nAre we clean yet?\n",
                "subsections": []
            }
        }
    }
}