Apache-Admin-Config
view release on metacpan or search on metacpan
lib/Apache/Admin/Config.pm view on Meta::CPAN
sub _get_arg
{
my($args, $motif) = @_;
# motif is a list of searched argument separated by a pipe
# each arguments can be ended by a ! for specifing that it don't wait for a value
# (ex: "-arg1|-arg2!" here -arg2 is boolean)
# return (value, argname)
return '' unless(@$args);
for(my $n = 0; $n < @$args; $n++)
{
foreach my $name (split(/\|/, $motif))
{
my $boolean = ($name =~ s/\!$//);
if(defined $args->[$n] && !ref($args->[$n]) && $args->[$n] eq $name)
{
return(undef) if(!$boolean && $n+1 >= @$args); # malformed argument
my $value = splice(@$args, $n, ($boolean?1:2));
$value = '' unless defined $value;
return(wantarray ? ($value, $name) : $value); # suppres argument name and its value from the arglist and return the value
}
}
}
return '';
}
sub _init
{
my $self = shift;
return $self->_parse;
}
sub _load
{
my($self, $htaccess) = @_;
my @htaccess;
my $fh;
$self->{htaccess} = $htaccess;
if(ref $htaccess eq 'GLOB')
{
$fh = $htaccess;
}
else
{
# just return true if file doesn't exist and -create was enabled
return 1 if(not -f $htaccess and $self->{create});
return $self->_set_error("`$htaccess' not readable") unless(-r $htaccess);
$fh = new FileHandle($htaccess) or return $self->_set_error("can't open `$htaccess' file for reading");
}
return $self->_parse($fh);
}
sub _set_error
{
my $self = shift;
$Apache::Admin::Config::ERROR = $self->top->{__last_error__} = join('', (caller())[0].': ', @_);
return;
}
1;
=pod
=head1 EXAMPLES
#
# Reindent configuration file properly
#
my $conf = Apache::Admin::Config
(
'/etc/apache/httpd.conf',
-indent => 2
);
$conf->save('-reformat');
#
# Managing virtual-hosts:
#
my $conf = new Apache::Admin::Config "/etc/apache/httpd.conf";
# adding a new virtual-host:
my $vhost = $conf->add_section(VirtualHost=>'127.0.0.1');
$vhost->add_directive(ServerAdmin=>'webmaster@localhost.localdomain');
$vhost->add_directive(DocumentRoot=>'/usr/share/www');
$vhost->add_directive(ServerName=>'www.localhost.localdomain');
$vhost->add_directive(ErrorLog=>'/var/log/apache/www-error.log');
my $location = $vhost->add_section(Location=>'/admin');
$location->add_directive(AuthType=>'basic');
$location->add_directive(Require=>'group admin');
$conf->save;
# selecting a virtual-host:
my $vhost;
foreach my $vh (@{$conf->section('VirtualHost')})
{
if($vh->directive('ServerName')->value eq 'www.localhost.localdomain')
{
$vhost = $vh;
last;
}
}
#
# Suppress all comments in the file
#
sub delete_comments
{
foreach(shift->comment)
{
$_->delete;
}
}
( run in 2.088 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )