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]

Reply via email to