Help-Site Computer Manuals
Software
Hardware
Programming
Networking
  Algorithms & Data Structures   Programming Languages   Revision Control
  Protocols
  Cameras   Computers   Displays   Keyboards & Mice   Motherboards   Networking   Printers & Scanners   Storage
  Windows   Linux & Unix   Mac

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

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


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|docs::2.0::api::Apache2::Directive )
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|docs::2.0::api::Apache2::Directive )
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|docs::2.0::api::Apache2::Directive )
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|docs::2.0::api::Apache2::Directive )
since: 2.0.00

directive

Get the name of the directive in $node:


  $name = $node->directive();
obj: $node ( Apache2::Directive object|docs::2.0::api::Apache2::Directive )
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|docs::2.0::api::Apache2::Directive )
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()|docs::2.0::api::Apache2::ServerUtil/C_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|docs::2.0::api::Apache2::Directive )
ret: $child_node ( Apache2::Directive object|docs::2.0::api::Apache2::Directive )
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|docs::2.0::api::Apache2::Directive )
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|docs::2.0::api::Apache2::Directive )
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|docs::2.0::api::Apache2::Directive )
ret: $next_node ( Apache2::Directive object|docs::2.0::api::Apache2::Directive )
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|docs::2.0::api::Apache2::Directive )
ret: parent_node ( Apache2::Directive object|docs::2.0::api::Apache2::Directive )
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.

Programminig
Wy
Wy
yW
Wy
Programming
Wy
Wy
Wy
Wy