HTML::Mason::Interp - phpMan

Command: man perldoc info search(apropos)  


NAME
    HTML::Mason::Interp - Mason Component Interpreter

SYNOPSIS
        my $i = HTML::Mason::Interp->new (data_dir=>'/usr/local/mason',
                                          comp_root=>'/usr/local/www/htdocs/',
                                          ...other params...);

DESCRIPTION
    Interp is the Mason workhorse, executing components and routing their
    output and errors to all the right places. In a mod_perl environment,
    Interp objects are handed off immediately to an ApacheHandler object
    which internally calls the Interp implementation methods. In that case
    the only user method is the new() constructor.

PARAMETERS TO THE new() CONSTRUCTOR
    autohandler_name
        File name used for autohandlers. Default is "autohandler". If this
        is set to an empty string ("") then autohandlers are turned off
        entirely.

    buffer_preallocate_size
        Number of bytes to preallocate in the output buffer for each
        request. Defaults to 0. Setting this to, say, your maximum page size
        (or close to it) can reduce the number of reallocations Perl
        performs as components add to the output buffer.

    code_cache_max_size
        Specifies the maximum number of components that should be held in
        the in-memory code cache. The default is 'unlimited', meaning no
        components will ever be discarded; Mason can perform certain
        optimizations in this mode. Setting this to zero disables the code
        cache entirely. See the code cache section of the administrator's
        manual for further details.

    comp_root
        The component root marks the top of your component hierarchy and
        defines how component paths are translated into real file paths. For
        example, if your component root is /usr/local/httpd/docs, a
        component path of /products/index.html translates to the file
        /usr/local/httpd/docs/products/index.html.

        Under Apache and CGI, comp_root defaults to the server's document
        root. In standalone mode comp_root defaults to the current working
        directory.

        This parameter may be either a scalar or an array reference. If it
        is a scalar, it should be a filesystem path indicating the component
        root. If it is an array reference, it should be of the following
        form:

         [ [ foo => '/usr/local/foo' ],
           [ bar => '/usr/local/bar' ] ]

        This is an array of two-element array references, not a hash. The
        "keys" for each path must be unique and their "values" must be
        filesystem paths. These paths will be searched in the provided order
        whenever a component path is resolved. For example, given the above
        component roots and a component path of /products/index.html, Mason
        would search first for /usr/local/foo/products/index.html, then for
        /usr/local/bar/products/index.html.

        The keys are used in several ways. They help to distinguish
        component caches and object files between different component roots,
        and they appear in the "title()" of a component.

        When you specify a single path for a component root, this is
        actually translated into

          [ [ MAIN => path ] ]

        If you have turned on dynamic_comp_root, you may modify the
        component root(s) of an interpreter between requests by calling
        "$interp->comp_root" with a value. However, the path associated with
        any given key may not change between requests. For example, if the
        initial component root is

         [ [ foo => '/usr/local/foo' ],
           [ bar => '/usr/local/bar' ], ]

        then it may not be changed to

         [ [ foo => '/usr/local/bar' ],
           [ bar => '/usr/local/baz' ],

        but it may be changed to

         [ [ foo   => '/usr/local/foo' ],
           [ blarg => '/usr/local/blarg' ] ]

        In other words, you may add or remove key/path pairs but not modify
        an already-used key/path pair. The reason for this restriction is
        that the interpreter maintains a component cache per key that would
        become invalid if the associated paths were to change.

    compiler
        The Compiler object to associate with this Interpreter. By default a
        new object of class compiler_class will be created.

    compiler_class
        The class to use when creating a compiler. Defaults to
        HTML::Mason::Compiler.

    data_dir
        The data directory is a writable directory that Mason uses for
        various features and optimizations: for example, component object
        files and data cache files. Mason will create the directory on
        startup, if necessary, and set its permissions according to the web
        server User/Group.

        Under Apache, data_dir defaults to a directory called "mason" under
        the Apache server root. You will need to change this on certain
        systems that assign a high-level server root such as /usr!

        In non-Apache environments, data_dir has no default. If it is left
        unspecified, Mason will not use object files, and the default data
        cache class will be "MemoryCache" instead of "FileCache".

    dynamic_comp_root
        True or false, defaults to false. Indicates whether the comp_root
        can be modified on this interpreter between requests. Mason can
        perform a few optimizations with a fixed component root, so you
        should only set this to true if you actually need it.

    escape_flags
        A hash reference of escape flags to set for this object. See the
        section on the set_escape method for more details.

    ignore_warnings_expr
        Regular expression indicating which warnings to ignore when loading
        components. Any warning that is not ignored will prevent the
        component from being loaded and executed. For example:

            ignore_warnings_expr =>
                'Global symbol.*requires explicit package'

        If set to undef, all warnings are heeded. If set to '.', warnings
        are turned off completely as a specially optimized case.

        By default, this is set to 'Subroutine .* redefined'. This allows
        you to declare global subroutines inside <%once> sections and not
        receive an error when the component is reloaded.

    object_file_extension
        Extension to add to the end of object files. Default is ".obj".

    preloads
        A list of component paths, optionally with glob wildcards, to load
        when the interpreter initializes. e.g.

            preloads => ['/foo/index.html','/bar/*.pl']

        Default is the empty list. For maximum performance, this should only
        be used for components that are frequently viewed and rarely
        updated. See the preloading components section of the
        administrator's manual for further details.

        As mentioned in the developer's manual, a component's "<%once>"
        section is executed when it is loaded. For preloaded components,
        this means that this section will be executed before a Mason or
        Apache request exist, so preloading a component that uses $m or $r
        in a "<%once>" section will fail.

    request_class
        The class to use when creating requests. Defaults to
        HTML::Mason::Request.

    resolver
        The Resolver object to associate with this Compiler. By default a
        new object of class resolver_class will be created.

    resolver_class
        The class to use when creating a resolver. Defaults to
        HTML::Mason::Resolver::File.

    static_source
        True or false, default is false. When false, Mason checks the
        timestamp of the component source file each time the component is
        used to see if it has changed. This provides the instant feedback
        for source changes that is expected for development. However it does
        entail a file stat for each component executed.

        When true, Mason assumes that the component source tree is
        unchanging: it will not check component source files to determine if
        the memory cache or object file has expired. This can save many file
        stats per request. However, in order to get Mason to recognize a
        component source change, you must flush the memory cache and remove
        object files. See static_source_touch_file for one easy way to
        arrange this.

        We recommend turning this mode on in your production sites if
        possible, if performance is of any concern.

    static_source_touch_file
        Specifies a filename that Mason will check once at the beginning of
        of every request. When the file timestamp changes, Mason will (1)
        clear its in-memory component cache, and (2) remove object files if
        they have not already been deleted by another process.

        This provides a convenient way to implement static_source mode. All
        you need to do is make sure that a single file gets touched whenever
        components change. For Mason's part, checking a single file at the
        beginning of a request is much cheaper than checking every component
        file when static_source=0.

    use_object_files
        True or false, default is true. Specifies whether Mason creates
        object files to save the results of component parsing. You may want
        to turn off object files for disk space reasons, but otherwise this
        should be left alone.

ACCESSOR METHODS
    All of the above properties have standard accessor methods of the same
    name. Only comp_root and ignore_warnings_expr can be modified in an
    existing interpreter; the rest are read-only.

ESCAPE FLAG METHODS
    apply_escapes ($text, $flags, [more flags...])
        This method applies a one or more escapes to a piece of text. The
        escapes are specified by giving their flag. Each escape is applied
        to the text in turn, after which the now-modified text is returned.

    remove_escape ($name)
        Given an escape name, this removes that escape from the
        interpreter's known escapes. If the name is not recognized, it is
        simply ignored.

    set_escape ($name => see below])
        This method is called to add an escape flag to the list of known
        escapes for the interpreter. The flag may only consist of the
        characters matching "\w" and the dash (-). It must start with an
        alpha character or an underscore (_).

        The right hand side may be one of several things. It can be a
        subroutine reference. It can also be a string match "/^\w+$/", in
        which case it is assumed to be the name of a subroutine in the
        "HTML::Mason::Escapes" module. Finally, if it is a string that does
        not match the above regex, then it is assumed to be "eval"able code,
        which will return a subroutine reference.

        When setting these with "PerlSetVar" directives in an Apache
        configuration file, you can set them like this:

          PerlSetVar  MasonEscapeFlags  "h => \&HTML::Mason::Escapes::basic_html_escape"
          PerlSetVar  MasonEscapeFlags  "flag  => \&subroutine"
          PerlSetVar  MasonEscapeFlags  "uc    => sub { ${$_[0]} = uc ${$_[0]}; }"
          PerlAddVar  MasonEscapeFlags  "thing => other_thing"

OTHER METHODS
    comp_exists (path)
        Given an *absolute* component path, this method returns a boolean
        value indicating whether or not a component exists for that path.

    exec (comp, args...)
        Creates a new HTML::Mason::Request object for the given *comp* and
        *args*, and executes it. The return value is the return value of
        *comp*, if any.

        This is useful for running Mason outside of a web environment. See
        "using Mason from a standalone script" in HTML::Mason::Admin for
        examples.

        This method isn't generally useful in a mod_perl environment; see
        subrequests instead.

    flush_code_cache
        Empties the component cache. When using Perl 5.00503 or earlier, you
        should call this when finished with an interpreter, in order to
        remove circular references that would prevent the interpreter from
        being destroyed.

    load (path)
        Returns the component object corresponding to an absolute component
        "path", or undef if none exists. Dies with an error if the component
        fails to load because of a syntax error.

    make_component (comp_source => ... )
    make_component (comp_file => ... )
        This method compiles Mason component source code and returns a
        Component object. The source may be passed in as a string in
        "comp_source", or as a filename in "comp_file". When using
        "comp_file", the filename is specified as a path on the file system,
        not as a path relative to Mason's component root (see $m->fetch_comp
        for that).

        If Mason encounters an error during processing, an exception will be
        thrown.

        Example of usage:

            # Make an anonymous component
            my $anon_comp =
              eval { $interp->make_component
                       ( comp_source => '<%perl>my $name = "World";</%perl>Hello <% $name %>!' ) };
            die $@ if $@;

            $m->comp($anon_comp);

    make_request (@request_params)
        This method creates a Mason request object. The arguments to be
        passed are the same as those for the "HTML::Mason::Request->new"
        constructor or its relevant subclass. This method will likely only
        be of interest to those attempting to write new handlers or to
        subclass "HTML::Mason::Interp". If you want to create a
        *subrequest*, see subrequests instead.

    purge_code_cache ()
        Called during request execution in order to clear out the code
        cache. Mainly useful to subclasses that may want to take some custom
        action upon clearing the cache.

    set_global ($varname, [values...])
        This method sets a global to be used in components. "varname" is a
        variable name, optionally preceded with a prefix ("$", "@", or "%");
        if the prefix is omitted then "$" is assumed. "varname" is followed
        by a value, in the case of a scalar, or by one or more values in the
        case of a list or hash. For example:

            # Set a global variable $dbh containing the database handle
            $interp->set_global(dbh => DBI->connect(...));

            # Set a global hash %session from a local hash
            $interp->set_global('%session', %s);

        The global is set in the package that components run in: usually
        "HTML::Mason::Commands", although this can be overridden via the
        in_package parameter. The lines above, for example, are equivalent
        to:

            $HTML::Mason::Commands::dbh = DBI->connect(...);
            %HTML::Mason::Commands::session = %s;

        assuming that in_package has not been changed.

        Any global that you set should also be registered with the
        allow_globals parameter; otherwise you'll get warnings from
        "strict".


Generated by phpMan Author: Che Dong On Apache Under GNU General Public License - MarkDown Format
2026-05-21 22:09 @216.73.216.105 CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.1!Valid CSS!

^_back to top