Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

Apache2::Directive (3)

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

User Contributed Perl Documentation
                              build::sparcv9::docs::api::Apache2::Directive(3)



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.



ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+-----------------------------------------+
       |ATTRIBUTE TYPE |            ATTRIBUTE VALUE              |
       +---------------+-----------------------------------------+
       |Availability   | web/server/apache-24/module/apache-perl |
       +---------------+-----------------------------------------+
       |Stability      | Uncommitted                             |
       +---------------+-----------------------------------------+

NOTES
       Source code for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This software was built from source available at
       https://github.com/oracle/solaris-userland.  The original community
       source was downloaded from
       https://www.apache.org/dist/perl/mod_perl-2.0.12.tar.gz.

       Further information about this software can be found on the open source
       community website at https://perl.apache.org/.



perl v5.32.0                      2022-01-30
                              build::sparcv9::docs::api::Apache2::Directive(3)