sourCEntral - mobile manpages

pdf

libapache2-mod-perl2-2.0.12::docs::api::Apache2::Directive

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.

pdf