Apache2::Directive.3pm

Langue: en

Version: 2007-11-12 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

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. 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.