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>