http://www.perlmonks.org?node_id=566589


in reply to Restarting counters in text

further to the other comment (correcting != to !~, I guess), if you have the whole content stored and sub out all instances of <exm>, then the second resetting line will never happen.

You need to do it line by line, and s///s does the whole thing at once.

edit This is utter nonsense, of course. What I meant to say was:

then the second resetting line will ALWAYS happen.

I don't know what way these lines are coming in - whether he's getting blocks of code with exm's, and never gets a second line containing exms that he wants to be contiguous. I've no idea, but I had sort of confused myself a bit.

Sorry for the late edit

Replies are listed 'Best First'.
Re^2: Restarting counters in text
by udinakar (Novice) on Aug 10, 2006 at 11:35 UTC
    Hi Further to the above comments. Here is the code that might work for you.
    $_ =~ s/<exm>/'<exm num="'.$exmno++.'">'/egs; if ($_ !~ /^<exm.*?$/) { $exmno=0; }
    Refer for the syntax rules before any thing fails :-) -Dinakar

    Edited - Added code tags (davorg)

      Please use <code> tags to make your code easier to read.

      if ($_ !~ /^<exm.*?$/)

      The ".*?$" on the end of that regex is pointless.

      --
      <http://dave.org.uk>

      "The first rule of Perl club is you do not talk about Perl club."
      -- Chip Salzenberg

        Opps It was redundant. I agree . Thanks for spotting :) Dinakar