docs::api::Apache2::Directive(3pm)
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.