install::TempContent::Objects::mod_perl-2.0.12::docs::api::Apache2::Directive(3) | User Contributed Perl Documentation | install::TempContent::Objects::mod_perl-2.0.12::docs::api::Apache2::Directive(3) |
Apache2::Directive - Perl API for manipulating the Apache configuration tree
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; } } }
"Apache2::Directive" provides the Perl API for manipulating the Apache configuration tree
"Apache2::Directive" provides the following functions and/or methods:
Get the arguments for the current directive:
$args = $node->args();
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"
Get a hash representation of the configuration tree, in a format suitable for inclusion in <Perl> sections.
$config_hash = $conftree->as_hash();
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', }
Get a string representation of the configuration node, in httpd.conf format.
$string = $node->as_string();
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
Get the root of the configuration tree:
$conftree = Apache2::Directive::conftree();
Get the name of the directive in $node:
$name = $node->directive();
Get the filename the configuration node was created from:
$filename = $node->filename();
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.
Get the first child node of this directive:
$child_node = $node->first_child;
Get the line number in a filename this node was created at:
$lineno = $node->line_num();
Get the node(s) matching a certain value.
$node = $conftree->lookup($directive, $args); @nodes = $conftree->lookup($directive, $args);
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');
Get the next directive node in the tree:
$next_node = $node->next();
Get the parent node of this directive:
$parent_node = $node->parent();
mod_perl 2.0 documentation.
mod_perl 2.0 and its core modules are copyrighted under The Apache Software License, Version 2.0.
The mod_perl development team and numerous contributors.
2022-01-30 | perl v5.34.0 |