From: David Gilden <[EMAIL PROTECTED]>
> How do get  $i do increment inside the substitution below?
> Thanks
> Dave
> 
> #!/usr/bin/perl -w
> 
> my $i = 0;
> 
> while(<>)
> {
> chomp;
> s/name=\"order/name=\"order$i++/;
> print "$_\n";
> 
> }

You have to tell Perl to treat the replacement as Perl code:

        s/name="order/$i++; 'name="order'/e;

Are you aware of the fact that this will only notice the 
'name="order' once on each line? you probably want /g there:

        s/name="order/$i++; 'name="order'/eg;

Notice though that you are not doing any changes to the string. 
Therefore you should not be using s///.

If it's OK to only look for one 'name="order' on each line you may 
use 

        $i++ if /name="order/;

if not you want this:

        $i += (() = (/name="order/g));

OK. I admit it's a little strange.
Let's dissect it:

        /name="order/g
in list context returns a list of all matches.

        () = (/name="order/g)
provides the list context to the matching, but immediately forgets 
the actuall matches.

        $i +=
provides scalar context to the
        () = (/name="order/g)
and since list assignment returns the number of elements of the 
righthand list the result of
        () = (/name="order/g)
in the scalar context is the number of matches.
Which we add to the $i.

Humpf.

Jenda
=============================================================
All those who understood the topic I just elucidated, please
verticaly extend your upper limbs.
        -- Ted Goff

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to