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 $nodemy $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-scriptPerlHandler 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-scriptPerlHandler 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-scriptPerlHandler 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
$directivevalue, 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
$argsargument, 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.