Provided by: libapache2-mod-perl2_2.0.10-2ubuntu3.18.04.1_amd64
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. perl v5.26.1 libapache2-mod-perl2-2.0.10::docs::api::Apache2::Directive(3pm)