ok, maybe something like this, filter every location block $rawconfig =~ s{
<location \s+ (\S+?)>
(.+?)
</location>
}{
ReformulateLocation("$1", "$2");
}gimsex;
print $rawconfig;
sub ReformulateLocation {
my( $loc, $con ) = @_;
my @pairs = $con =~ m{ ^ \s* (\S+) \s+ ([^\r\n]+?) \s* $}gmix;
dd( { $loc, \@pairs } );
return "<location $loc> $con </location>"; ## no change
}
__END__
{ "/" => ["MaxConnPerIP", 12, "NoIPLimit", "image/*"] }
{ "/location2" => ["MaxConnPerIP", 0] }
{ "/location3" => ["MaxConnPerIP", 0] }
<IfModule> ## workaround of some kind
<IfModule mod_limitipconn.c>
<location />
MaxConnPerIP 12
NoIPLimit image/*
</location>
<location /location2>
MaxConnPerIP 0
</location>
<location /location3>
MaxConnPerIP 0
</location>
</IfModule>
Also perlfaq6 has some tips |