Current Path : /usr/local/lib/perl5/site_perl/5.8.9/mach/Apache/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //usr/local/lib/perl5/site_perl/5.8.9/mach/Apache/PerlSections.pm |
package Apache::PerlSections; use strict; $Apache::PerlSections::VERSION = '1.61'; use Devel::Symdump (); use Data::Dumper (); sub store { require IO::File; my($self, $file) = @_; my $fh = IO::File->new(">$file") or die "can't open $file $!\n"; $fh->print($self->dump); $fh->close; } sub dump { my @retval = "package Apache::ReadConfig;"; local $Data::Dumper::Indent = 1; my $stab = Devel::Symdump->rnew('Apache::ReadConfig'); my %dump = ( hashes => 'HASH', scalars => 'SCALAR', arrays => 'ARRAY', ); while(my($meth,$type) = each %dump) { no strict 'refs'; push @retval, "#$meth:\n"; for my $name ($stab->$meth()) { my $s = Data::Dumper->Dump([*$name{$type}], ['*'.$name]); $s =~ s/Apache:{0,2}ReadConfig:://; if($s =~ /^\$/) { $s =~ s/= \\/= /; #whack backwack } push @retval, $s unless $s =~ /= (undef|\(\));$/; } } return join "\n", @retval, "1;", "__END__", ""; } 1; __END__ =head1 NAME Apache::PerlSections - Utilities for work with <Perl> sections =head1 SYNOPSIS use Apache::PerlSections (); =head1 DESCRIPTION It is possible to configure you server entirely in Perl using <Perl> sections in I<httpd.conf>. This module is here to help you with such a task. =head1 METHODS =over 4 =item dump This method will dump out all the configuration variables mod_perl will be feeding the the apache config gears. The output is suitable to read back in via C<eval>. Example: <Perl> use Apache::PerlSections (); $Port = 8529; $Location{"/perl"} = { SetHandler => "perl-script", PerlHandler => "Apache::Registry", Options => "ExecCGI", }; @DocumentIndex = qw(index.htm index.html); $VirtualHost{"www.foo.com"} = { DocumentRoot => "/tmp/docs", ErrorLog => "/dev/null", Location => { "/" => { Allowoverride => 'All', Order => 'deny,allow', Deny => 'from all', Allow => 'from foo.com', }, }, }; print Apache::PerlSections->dump; </Perl> This will print something like so: package Apache::ReadConfig; #scalars: $Port = 8529; #arrays: @DocumentIndex = ( 'index.htm', 'index.html' ); #hashes: %Location = ( '/perl' => { PerlHandler => 'Apache::Registry', SetHandler => 'perl-script', Options => 'ExecCGI' } ); %VirtualHost = ( 'www.foo.com' => { Location => { '/' => { Deny => 'from all', Order => 'deny,allow', Allow => 'from foo.com', Allowoverride => 'All' } }, DocumentRoot => '/tmp/docs', ErrorLog => '/dev/null' } ); 1; __END__ =item store This method will call the C<dump> method, writing the output to a file, suitable to be pulled in via C<require>. Example: Apache::PerlSections->store("httpd_config.pl"); require 'httpd_config.pl'; =back =head1 SEE ALSO mod_perl(1), Data::Dumper(3), Devel::Symdump(3) =head1 AUTHOR Doug MacEachern