On Thu, Jul 14, 2016 at 1:24 PM, Darryl Philip Baker < darryl.ba...@northwestern.edu> wrote:
> On Thu, Jul 14, 2016 at 10: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 > > > > Why not go line by line? Not 100% certain on the Apache syntax, but in > your while loop where you are processing line by line: > > > > next if /Order\s+deny,\s*allow/i; # Skip it in the output > > > > if( /(\s*)Deny\s+from\s+all/i) { > > > > my $leading_whitespace = $1; # Preserve whatever whitespace is in the > file now, could be multiple tabs and or spaces > > > > print $leading_whitespace . "Require all denied"; > > > > } > > Learning from that example I came up with: > > $prevline = $_; # Save current line for > later if needed > > # Change: > > # Order deny,all > > # Deny from all > > # To: > > # Require all denied > > # No matter what case the first letters are > > if ( /Order\s+Deny,\s*Allow/i ) { > > next; > > chomp $_; > > if ( /(\s)Deny\s+from\s+All/i) { > > $whitespace = $1; > > print $whitespace, "Require all denied \# New Syntax\n"; > > next; > > chomp $_; > > } else { > > print $prevline, " \# Old Syntax\n"; > > } > > } > > It is not doing the expected. The “Order deny,allow” line is never output > and where I want “Require all denied” the “Deny from all” is still being > output. > > > > Darryl Baker > > PMOET -DAPS > > X76674 > > > Hello, I ran into a similar situation about 6 months ago and needed to change text that spread multiple lines. Below is similar to what I used: $_ =~ s/Order deny,allow.*?Deny from all/Require all denied/ims; #not the best method but worked for me ##timtowtdi