Hi David,

Thanks for ur suggestion.

But I am a new-bie to Perl. Can u give me a example for 'look-ahead'
matches.

Regards,
Mallik.

-----Original Message-----
From: David le Blanc [mailto:[EMAIL PROTECTED]
Sent: Tuesday, October 05, 2004 5:57 PM
To: John W. Krahn
Cc: Perl Beginners
Subject: Re: Reg Exp


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.



On Tue, 05 Oct 2004 04:03:21 -0700, John W. Krahn <[EMAIL PROTECTED]> wrote:
> Mallik wrote:
> > Dear Friends,
>
> Hello,
>
> > 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;
>
> John
> --
> use Perl;
> program
> fulfillment
>
>
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> <http://learn.perl.org/> <http://learn.perl.org/first-response>
>
>

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to