Provided by: libapache2-mod-perl2_2.0.10-2ubuntu3.18.04.1_amd64 bug

NAME

       Apache2::Directive - Perl API for manipulating the Apache configuration tree

Synopsis

         use Apache2::Directive ();

         my $tree = Apache2::Directive::conftree();

         my $documentroot = $tree->lookup('DocumentRoot');

         my $vhost = $tree->lookup('VirtualHost', 'localhost:8000');
         my $servername = $vhost->{'ServerName'};

         use Data::Dumper;
         print Dumper $tree->as_hash;

         my $node = $tree;
         while ($node) {
             print $node->as_string;

             #do something with $node

             my $directive = $node->directive;
             my $args = $node->args;
             my $filename = $node->filename;
             my $line_num = $node->line_num;

             if (my $kid = $node->first_child) {
                 $node = $kid;
             }
             elsif (my $next = $node->next) {
                 $node = $next;
             }
             else {
                 if (my $parent = $node->parent) {
                     $node = $parent->next;
                 }
                 else {
                     $node = undef;
                 }
             }
         }

Description

       "Apache2::Directive" provides the Perl API for manipulating the Apache configuration tree

API

       "Apache2::Directive" provides the following functions and/or methods:

   "args"
       Get the arguments for the current directive:

         $args = $node->args();

       obj: $node ( "Apache2::Directive object" )
       ret: $args ( string )
           Arguments are separated by a whitespace in the string.

       since: 2.0.00

       For example, in httpd.conf:

         PerlSwitches -M/opt/lib -M/usr/local/lib -wT

       And later:

         my $tree = Apache2::Directive::conftree();
         my $node = $tree->lookup('PerlSwitches');
         my $args = $node->args;

       $args now contains the string "-M/opt/lib -M/usr/local/lib -wT"

   "as_hash"
       Get a hash representation of the configuration tree, in a format suitable for inclusion in
       <Perl> sections.

          $config_hash = $conftree->as_hash();

       obj: $conftree ( "Apache2::Directive object" )
           The config tree to stringify

       ret: $config_hash ( HASH reference )
       since: 2.0.00

       For example: in httpd.conf:

         <Location /test>
           SetHandler perl-script
           PerlHandler Test::Module
         </Location>

       And later:

         my $tree = Apache2::Directive::conftree();
         my $node = $tree->lookup('Location', '/test/');
         my $hash = $node->as_hash;

       $hash now is:

         {
           'SetHandler'  => 'perl-script',
           'PerlHandler' => 'Test::Module',
         }

   "as_string"
       Get a string representation of the configuration node, in httpd.conf format.

          $string = $node->as_string();

       obj: $node ( "Apache2::Directive object" )
           The config tree to stringify

       ret: $string ( string )
       since: 2.0.00

       For example: in httpd.conf:

         <Location /test>
           SetHandler perl-script
           PerlHandler Test::Module
         </Location>

       And later:

         my $tree = Apache2::Directive::conftree();
         my $node = $tree->lookup('Location', '/test/');
         my $string = $node->as_string;

       $string is now:

         SetHandler perl-script
         PerlHandler Test::Module

   "conftree"
       Get the root of the configuration tree:

         $conftree = Apache2::Directive::conftree();

       obj: "Apache2::Directive" ( class name )
       ret: $conftree ( "Apache2::Directive object" )
       since: 2.0.00

   "directive"
       Get the name of the directive in $node:

         $name = $node->directive();

       obj: $node ( "Apache2::Directive object" )
       ret: $name ( string )
       since: 2.0.00

   "filename"
       Get the filename the configuration node was created from:

         $filename = $node->filename();

       obj: $node ( "Apache2::Directive object" )
       ret: $filename ( string )
       since: 2.0.00

       For example:

         my $tree = Apache2::Directive::conftree();
         my $node = $tree->lookup('VirtualHost', 'example.com');
         my $filename = $node->filename;

       $filename is now the full path to the httpd.conf that VirtualHost was defined in.

       If the directive was added with "add_config()", the filename will be the path to the
       httpd.conf that trigerred that Perl code.

   "first_child"
       Get the first child node of this directive:

         $child_node = $node->first_child;

       obj: $node ( "Apache2::Directive object" )
       ret: $child_node ( "Apache2::Directive object" )
           Returns the first child node of $node, "undef" if there is none

       since: 2.0.00

   "line_num"
       Get the line number in a filename this node was created at:

         $lineno = $node->line_num();

       obj: $node ( "Apache2::Directive object" )
       arg1: $lineno (integer)
       since: 2.0.00

   "lookup"
       Get the node(s) matching a certain value.

         $node  = $conftree->lookup($directive, $args);
         @nodes = $conftree->lookup($directive, $args);

       obj: $conftree ( "Apache2::Directive object" )
           The config tree to stringify

       arg1: $directive ( string )
           The name of the directive to search for

       opt arg2: "args" ( string )
           Optional args to the directive to filter for

       ret: $string ( string / ARRAY of HASH refs )
           In LIST context, it returns all matching nodes.

           In SCALAR context, it returns only the first matching node.

           If called with only $directive value, this method returns all nodes from that
           directive. For example:

             @Alias = $conftree->lookup('Alias');

           returns all nodes for "Alias" directives.

           If called with an extra $args argument, it returns only nodes where both the directive
           and the args matched. For example:

             $VHost = $tree->lookup('VirtualHost', '_default_:8000');

       since: 2.0.00

   "next"
       Get the next directive node in the tree:

         $next_node = $node->next();

       obj: $node ( "Apache2::Directive object" )
       ret: $next_node ( "Apache2::Directive object" )
           Returns the next sibling of $node, "undef" if there is none

       since: 2.0.00

   "parent"
       Get the parent node of this directive:

         $parent_node = $node->parent();

       obj: $node ( "Apache2::Directive object" )
       ret: "parent_node" ( "Apache2::Directive object" )
           Returns the parent of $node, "undef" if this node is the root node

       since: 2.0.00

See Also

       mod_perl 2.0 documentation.

Copyright

       mod_perl 2.0 and its core modules are copyrighted under The Apache Software License,
       Version 2.0.

Authors

       The mod_perl development team and numerous contributors.

perl v5.26.1                      libapache2-mod-perl2-2.0.10::docs::api::Apache2::Directive(3pm)