Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 232
  • Last Modified:

Increasing numbers

If I have a file where it is like
blah::0::22::blah

and I read the field 22 to $thenumber --
How can I increase 22 to 23? do I do $thenumber++ ?
0
logique
Asked:
logique
  • 4
  • 4
  • 2
  • +1
1 Solution
 
guadalupeCommented:
yes that will work as long as you remember that if you use this variable in the same instance you will get thje old value and then it will increment

EX:

$n = 1;

print $n; # 1

print $n++; # 1

print $n; # 2

print ++$n; # 3

print $n; # 3
0
 
logiqueAuthor Commented:
Adjusted points to 55
0
 
logiqueAuthor Commented:
Will it modify the file though?
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
ozoCommented:
To modify the file, you'd have to write to it. (unless it is a tie'd file)
0
 
logiqueAuthor Commented:
How would I replace the current line blah::0::24::blah

with blah::0::25::blah
0
 
ozoCommented:
perldoc -q "How do I change one line in a file"
0
 
PC_User321Commented:
open (IO_FILE, "< lines.txt") or die $!;
@Lines = <IO_FILE>;
foreach $_ (@Lines) {
      @Parts = split /::/;
      $Parts[2]++;
      push @OutArray, join ("::", @Parts);
}
close IO_FILE;
open (IO_FILE, "> lines.txt") or die $!;

print IO_FILE @OutArray;
close IO_FILE;
0
 
PC_User321Commented:
My comment above was assuming you wanted to change all the lines.

If you only want to change a particular line then, as you read each one you check if it is the one to change, and if so you do the ++ operation.
0
 
PC_User321Commented:
This is what I mean, if you only want to change certain lines, not all:-

open (IO_FILE, "< lines.txt") or die $!;
while (<IO_FILE>) {
   $Line = $_;
   if (insert your test here) {
      @Parts = split /::/, $Line;
      $Parts[2]++;
      push @OutArray, join ("::", @Parts);
   } else {
      push @OutArray, $Line;
   }      
}
close IO_FILE;
open (IO_FILE, "> lines.txt") or die $!;

print IO_FILE @OutArray;
close IO_FILE;


0
 
PC_User321Commented:
logique,

You awarded the points to quadalupe, but it seems that he left many of your questions unanswered. These questions were subsequently answered by others.

It is usual to give the points to the first person who actually fully satisfies you, rather than the first person claims to have an answer.

It is also possible to split the points among various contributors.

0
 
logiqueAuthor Commented:
Sorry, I'm new here.
0
 
guadalupeCommented:
Sorry I had understood only the increse and not the file edit...PC User321 is right...
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 4
  • 4
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now