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


NAME

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


Synopsis

  use Apache::Directive ();

  my $tree = Apache::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

      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

Apache::Directive allows its users to search and navigate the internal Apache configuration.

Internally, this information is stored in a tree structure. Each node in the tree has a reference to its parent (if it's not the root), its first child (if any), and to its next sibling.

All these methods are read-only


API

Apache::Directive provides the following functions and/or methods:

args

The arguments for the current directive, stored as a space separated list

  $args      = $node->args();
obj: $node ( Apache::Directive object|docs::2.0::api::Apache::Directive )
ret: $args ( string )
since: 1.99_12

as_hash

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

   $config_hash = $conftree->as_hash();
obj: $conftree ( Apache::Directive object|docs::2.0::api::Apache::Directive )
The config tree to stringify

ret: $config_hash (HASH)
since: 1.99_12

as_string

Returns a string representation of the configuration node, in httpd.conf format. This does not traverse down to sub-trees.

   $string = $node->as_string();
obj: $node ( Apache::Directive object|docs::2.0::api::Apache::Directive )
The config tree to stringify

ret: $string ( string )
since: 1.99_12

conftree

Returns the root of the configuration tree.

  $tree = Apache::Directive->conftree();
obj: Apache::Directive (class name)
ret: $tree ( Apache::Directive object|docs::2.0::api::Apache::Directive )
since: 1.99_12

directive

Returns the name of the directive in $node.

  $name = $node->directive();
obj: $node ( Apache::Directive object|docs::2.0::api::Apache::Directive )
ret: $directive ( string )
since: 1.99_12

filename

Returns the filename the configuration node was created from

  $filename = $node->filename();
obj: $node ( Apache::Directive object|docs::2.0::api::Apache::Directive )
ret: $filename ( string )
since: 1.99_12

first_child

The first child node of this directive

  $subtree = $node->first_child;
obj: $node ( Apache::Directive object|docs::2.0::api::Apache::Directive )
ret: $child_node ( Apache::Directive object|docs::2.0::api::Apache::Directive )
Returns the first child node of $node, undef if there is none

since: 1.99_12

line_num

Returns the line number in filename this node was created from

  $lineno = $node->line_num();
obj: $node ( Apache::Directive object|docs::2.0::api::Apache::Directive )
arg1: $lineno (integer)
since: 1.99_12

lookup

Returns node(s) matching a certain value.

  $node  = $conftree->lookup($directive, $args);
  @nodes = $conftree->lookup($directive, $args);
obj: $conftree ( Apache::Directive object|docs::2.0::api::Apache::Directive )
The config tree to stringify

arg1: $directive ( string )
opt arg2: args ( string )
ret: $string ( string / ARRAY of HASHES )
In list context, it will return all matching nodes.

In scalar context, it will return only the first matching node.

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

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

would return all nodes for Alias directives.

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

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

since: 1.99_12

If called with only one $directive value, this will return all nodes from that directive:

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

Would return all nodes for Alias directives.

If called with an extra $args argument, this will return only nodes where both the directive and the args matched:

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

next

The next directive node in the tree

  $next_node = $node->next();
obj: $node ( Apache::Directive object|docs::2.0::api::Apache::Directive )
ret: $next_node ( Apache::Directive object|docs::2.0::api::Apache::Directive )
Returns the next sibling of $node, undef if there is none

since: 1.99_12

parent

The parent node of this directive

  $parent_node = $node->parent();
obj: $node ( Apache::Directive object|docs::2.0::api::Apache::Directive )
ret: parent_node ( Apache::Directive object|docs::2.0::api::Apache::Directive )
Returns the parent of $node, undef if this node is the root node

since: 1.99_12


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.

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