in reply to need help with search and replace

Please use <CODE> ... </CODE> to surround any code or other file contents you post, as that will make it more readable and responses more likely.

This is what you posted :

The input is for example: http://www.ad.nl/actueel/ZZZK51QP4DC.html&May occure often & The output should be: url1=http://www.ad.nl/actueel/ZZZK51QP4DC.htmlitem1=May occure often And this for more lines. So the number must increase for the next line. $vervang =~ s/http/url1=http/; $vervang =~ s/&/item=/g; print $vervang; @buffer = $vervang; print @buffer; foreach $teller(0..15) { $telop{"http"} = 'url' . ($teller+1) . '=http'; print $telop; } foreach $vervang(@buffer) { $vervang =~ s/& http/$telop/gi; print $vervang; }

Here is my try at it (completely untested, sorry) :

use strict; # always do this my $line; # this will contain the current line read # from stdin. We could also have used $_, # but using $line is less cryptic my $counter = 1; # This is the counter of the urlXX= string while (<>) { # while we get input, we read it $line = $_; # Munge the current line into what we want $line =~ s!^http://!url$counter=http://!i; # BastardOperator made a post below that got me thinking. # Maybe you want it this way : $line =~ s!&!item=!g; # but maybe you want item1=bla item2=ble etc. # This line will do the second : my $itemcount = 1; while ($line =~ s/&/$itemcount++/e) { # the action is in the while statement } # and print it print $line; # and increment our counter $counter++; };
But the meaning of the lines following this code is completely unclear to me. What do you want to accomplish by using
@buffer = $vervang;
? @buffer is an array, and $vervang is the munged line.

Replies are listed 'Best First'.
RE: Re: need help with search and replace
by BastardOperator (Monk) on Sep 15, 2000 at 18:32 UTC
    # Munge the current line into what we want $line =~ s!^http://!url$counter=http://!i; $line =~ s!&!item=!g;
    I think this should be
    # Munge the current line into what we want $line =~ s!^http://!url$counter=http://!i; $line =~ s!&!item$counter=!g;
    Otherwise, great post