in reply to replacing values via web

A quick revision of your current code:

foreach my $thing (@lines) { if ($thing =~ /<% INCLUDE exclusives(\d+)\.tmpl %>/) { my $num = $1 == 1 ? 3 : 1; $thing =~ s/<% INCLUDE exclusives(\d+)\.tmpl %>/<% INCLUDE exclusives$ +num\.tmpl %>/; } }

As mentioned above, you should get the number of files from the directory to prevent your code from getting too far away from reality.

By the way, get in the habit of using '-w' on your hash-bang line and using the 'strict' pragma. If using Perl 5.6.0, use the 'warnings' pragma. They will save you a ton of debugging time.

HTH

UPDATE: An observant person below asked whether the $_ variable could be changed and the changes affect the @lines array, (I used $_ instead of $thing in my first version). I looked around in the Perl Cookbook (from my Perl CD Bookshelf), and noticed that they never used the $_ variable to do something with each element of an array, so I decided to change mine just to be safe. I'm pretty sure it will work, but I didn't want to assume too much.

J. J. Horner
Linux, Perl, Apache, Stronghold, Unix
jhorner@knoxlug.org http://www.knoxlug.org/

Replies are listed 'Best First'.
RE: (jjhorner)replacing values via web
by le (Friar) on Jul 18, 2000 at 16:21 UTC
    Just a dumb question:

    Will a substitution on $_ find its way into the array? (Will the array contents get changed when one changes $_?)
      Yes it will since the array element is an lvalue.

      From perlsyn:

      If any element of LIST is an lvalue, you can modify it by modifying VAR inside the loop. That's because the foreach loop index variable is an implicit alias for each item in the list that you're looping over.

      Nuance