On Tue, 05 Oct 2004 15:22:25 -0700, John W. Krahn <[EMAIL PROTECTED]> wrote: > [Please do not top-post. TIA] > > > David le Blanc wrote: > > > > On Tue, 05 Oct 2004 04:03:21 -0700, John W. Krahn <[EMAIL PROTECTED]> wrote: > > > >>Mallik wrote: > >> > >>>I have the below code. > >>> > >>>my $a = ":-:m:-:a:-:l:-:i:-:k"; # Here each letter is separated by :-: > >>>my $del = ':-:'; # Delimeter > >>>my $b; > >>> > >>>while ($a ne $b) > >>>{ > >>> $a =~ /^$b$del(.?)($del)?/; > >>> my $c = $1; > >>> print "$c\n"; > >>> $b .= $del . $c; > >>>} > >>> > >>>The above code is working fine. But when I change the text in $a like below > >>> > >>>$a = ":-:m:-:a:-:l:-::-:k"; # Here I removed the letter l between two '::'s > >>> > >>>Now the code is not working properly. > >>> > >>>Any help in this is appreciated. > >>> > >>>Note: There may be non-alpha numeric chars between ':-:'. > >> > >>Perhaps you need to use split and join: > >> > >>$a = ':-:m:-:a:-:l:-::-:k'; > >> > >>my $del = ':-:'; # Delimeter > >> > >>$b = join $del, split $del, $a, -1; > > > > Your use of (.?)($del)? does not do what you expect. In the case of > > :-:a:-: you will find (.?) = 'a' and ($del)? matches a delimiter, BUT > > :-::-: you will find (.?) = ":" and ($del)? matches nothing. > > > > Check out 'look-ahead' matches for a way to solve this. > > What do you mean? I am not using (.?)($del)? in my example.
Sorry I was replying to Malliks original. My emailer decided I was replying to the 'thread' and picked the last email in the thread to attach. I figured out how to fix this now :-) ciao > > > > > John -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>