One easier approach:

use Tie::File;
tie( my @array, 'Tie::File', "/path/to/file" )
       or die $!;

my $n = 0;
while ( $n <= $#array )  {
      if ( $array[$n] =~ /.*[Oo]rder deny,allow(.*)/  and
            $n < $#array and $array[$n+1] =~ /[\Dd]eny from all(.*)/ )
      {
                  $n += 2 and print "\tRequire all denied\n";
                  next;
      }
      print $array[$n++],"\n";
}



On Thu, Jul 14, 2016 at 7:50 AM, Darryl Philip Baker
<darryl.ba...@northwestern.edu> wrote:
> While not truly a beginner it feels that way after not doing anything 
> substantial in Perl in many years.
>
> I currently need a program to take Apache HTTPD configuration files in HTTPD 
> 2.2 syntax used in current production and convert them to HTTPD 2.4 syntax in 
> future production. I will need to do this many times weekly until we cut over 
> to the new systems. My first challenge is converting the permissions syntax:
>         Order deny,allow
>         Deny from all
> To
>         Require all denied
> And similar transformations. I was able to make this modification if I set $/ 
> = undef and look at the file as a whole. My problem is I really want to 
> process the file line by line to remove several <IfDefine BLAH> ... 
> </IfDefine> blocks which may have other conditional code blocks contained 
> within them. I have considered using two separate scripts and a two pass 
> solution but there is a part of me which would rather have a single script do 
> it all in one pass.
>
> My current attempt, after several tries, is:
>  if ( m/{.*}[Oo]rder deny,allow(.*)\n(.*)[Dd]eny from all(.*)/) {
>         print "\tRequire all denied\n";
>         next;
> }
> While not causing syntax errors it is not doing what I want either. I am 
> probably using the 'm/' incorrectly and need your help.
>
> Darryl Baker
>
> --
> To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> For additional commands, e-mail: beginners-h...@perl.org
> http://learn.perl.org/
>
>

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to