in reply to Re^2: regex renaming with existing files
in thread regex renaming with existing files

ah ok, i did not even know you could put ++ or -- on the opposite side. also ill change '1' to 1 so it is a better example.
  • Comment on Re^3: regex renaming with existing files

Replies are listed 'Best First'.
Re^4: regex renaming with existing files
by GrandFather (Saint) on Nov 04, 2014 at 20:07 UTC

    There is a very important difference between pre increment and post increment operators. Consider:

    use strict; use warnings; my $counter = 1; print "With ++\$counter was 1 and returns ", ++$counter, "\n"; print "\$counter now contains: $counter\n\n"; $counter = 1; print "With \$counter++ was 1 and returns ", $counter++, "\n"; print "\$counter now contains: $counter\n";

    Prints:

    With ++$counter was 1 and returns 2 $counter now contains: 2 With $counter++ was 1 and returns 1 $counter now contains: 2

    See it? With pre increment (++$counter) the increment happens before the value is returned so you get the updated value. With post increment the value before incrementing is returned. If you are not using the returned value it doesn't matter which version you use in terms of how the code works, but it does make a difference to how easily the code is understood. Because we tend to take more notice of the first things on a line sticking the operator out the front makes it more visible and thus easier to understand.

    Perl is the programming world's equivalent of English
Re^4: regex renaming with existing files
by ArifS (Beadle) on Nov 04, 2014 at 14:26 UTC
    Thank you for your reply. I however was having the same issue after assigning $counter = 1 & ++$counter. I then created a for loop, as following, and now it's working as I wanted-
    # replaced $counter with $i. for ($i=1; $i<10; $i++){ ........... }
    Result: folder1, folder1.[1], folder1.[2], folder1.[3]...etc.

      Show us the actual code you tried and tell us what issue you saw. $counter = 1 & ++$counter is rather unlikely code and probably doesn't do anything like what you expect, although it's hard to tell what you expect.

      Don't use the C style for loop. Instead use:

      for my $counter (1 .. 9) { ... }

      which is much clearer and a lot harder to get wrong.

      Perl is the programming world's equivalent of English