Maybe something like this will help simplify it...
s/(\d),(\d),(\d+),(\d{4})/fixNums($1,$2,$3,$4)/e;
sub fixNums
{
my @nums = @_;
# bump the second
$nums[1]++;
# or bump the third
$nums[2]++;
# or bump on some condition
$nums[1]++ if ($nums[0] == 7);
return join(',', @nums); # returns the comma delimited nums
}
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Wednesday, March 12, 2003 10:14 AM
To: [EMAIL PROTECTED]
Subject: String manipulation problem
Hi,
While reading each line in a file, If I find a certain number, I need to
increment a digit within that number. For example, when reading through my
file, I expect to find the following line.
#define DS_FILEVERSION 7,0,0,0462
What I want to do is have the ability to increment the first two zero's
after the 7 on demand. I may accasionaly want to increment the first zero,
making the number 7,1,0,0462, or a I may want to just increment the second
zero, making the number 7,0,1,0462
Here is how I have been trying to go about this. The code below bumps the
first zero just fine, resulting in the number being 7,1,0,0462. The problem
is that I can't figure out how to make it bump the second zero, resulting in
7,0,1,0462
=================================================================
if (!open(BASEFILE, $base_version_file)){
push(@g_fatal_errors, "$!, $base_version_file in
BumpBaseVercommn_File");
&GameOver(1);
}
if(!open(TEMPFILE, ">temp.txt")){
push(@g_fatal_errors, "$!, temp.txt in BumpBaseVercommn_File");
&GameOver(1);
}
while(<BASEFILE>)
{
if (/(\d,\d),(\d+),(\d{4})/){
if (!s/$2/sprintf("%0ld", $& + 1)/e){
&Debug("Unable to bump BaseVercommn.h in
BumpBaseVercommn_File, the build will be aborted!");
&GameOver(1);
}
}
print(TEMPFILE);
}
close(BASEFILE);
close(TEMPFILE);
if(!unlink($base_version_file)){
push(@g_fatal_errors, "$!, $base_version_file in
BumpBaseVercommn_File");
&GameOver(1);
}
if(!rename("temp.txt", $base_version_file)){
push(@g_fatal_errors, "$!, Could not rename temp.txt to
$base_version_file in BumpBaseVercommn_File");
&GameOver(1);
}
=================================================================
Thanks in advance for your help,
Ryan
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]