Hi,

Is it possible to take a string ($pat) do a substitution on it and print the
result, without actually changing the contents of the original variable?

Basically, I'm trying to write a script that will take a string and look for
a pattern in that line (which is guaranteed to be a number), increment it
and print the new line, then increment it again an print it, etc., up to a
specified number of times.

Here's the start of some code I have:
(I realize there's no error checking but right now I'm just focusing on the
basic logic).

use strict;
my $pat = $ARGV[0];
my $num = $ARGV[1];

foreach( <STDIN> ) {
  print;  ## print the original line
  foreach my $i ($pat .. ($pat+$num)) {
    s/$i/$i+1/e;
    print;
  }
}

A sample input line would look like this:
<link id="31.101.18.0">

And if called like this "%script.pl 18 5" I should expect to se
<link id="31.101.18.0">
<link id="31.101.19.0">
<link id="31.101.20.0">
<link id="31.101.21.0">
<link id="31.101.22.0">
<link id="31.101.23.0">
<link id="31.101.24.0">

I'm running into several problems with this.  It doesn't work because each
substitution changes the original line.  If I had specified 15 instead of 5
as the second parameter, the s/// would start matching the first 31 in the
input line when $i eventually became 31.

Ultimately, I want to be able to specify a bit of sample text like '.18.'
which is more unique than simply '18'.  Then have the script search for the
more unique pattern but still be able to increment the number within it.
(ie.  '.19.' '.20.' '.21' ...) Note, that these would be literal dots, not
regex wildcards.

I'm not asking for someone to write the script for me.  I just need help
understanding the basic regex operation I need.  (though I know there are
other problems as well.)

Thanks.
-- Brad


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to