[cl-ppcre-devel] differing results between cl-ppcre and perl -- operator precedence?

Cyrus Harmon ch-lisp at bobobeach.com
Fri Apr 13 12:23:31 UTC 2012


Our perls behave the same. I was seeing a match (to b only) and then my one-liner was printing the original string which matched, not the matched portion.

Thanks and sorry for the false alarm.

Cyrus

On Apr 13, 2012, at 5:12 AM, Edi Weitz wrote:

> My Perl behaves differently.  See below:
> 
> edi at miles:/tmp$ cat test.pl
> #!/usr/bin/perl
> 
> $a = "Ta";
> $b = "Tb";
> print "a: '$&'\n" if ($a =~ /^T(a)|(b)/);
> print "b: '$&'\n" if ($b =~ /^T(a)|(b)/);
> 
> edi at miles:/tmp$ perl test.pl
> a: 'Ta'
> b: 'b'
> edi at miles:/tmp$ perl -v
> 
> This is perl, v5.8.8 built for x86_64-linux-gnu-thread-multi
> 
> Copyright 1987-2006, Larry Wall
> 
> Perl may be copied only under the terms of either the Artistic License or the
> GNU General Public License, which may be found in the Perl 5 source kit.
> 
> Complete documentation for Perl, including FAQ lists, should be found on
> this system using "man perl" or "perldoc perl".  If you have access to the
> Internet, point your browser at http://www.perl.org/, the Perl Home Page.
> 
> On Fri, Apr 13, 2012 at 1:55 PM, Cyrus Harmon <ch-lisp at bobobeach.com> wrote:
>> In trying to track down a problem matching a cxml-rng pattern in soiree, I came across the following somewhat odd behavior in cl-pppcre.
>> 
>> In perl, I see:
>> 
>> (sly at barbaresco):~/projects/soiree$ echo "Ta" | perl -ne 'print if /^T(a)|(b)$/'
>> Ta
>> 
>> (sly at barbaresco):~/projects/soiree$ echo "Tb" | perl -ne 'print if /^T(a)|(b)$/'
>> Tb
>> 
>> Whereas with cl-ppcre, I see:
>> 
>> SOIREE-ICALENDAR> (cl-ppcre:scan-to-strings "^T(a)|(b)$" "Ta")
>> "Ta"
>> #("a" NIL)
>> 
>> SOIREE-ICALENDAR> (cl-ppcre:scan-to-strings "^T(a)|(b)$" "Tb")
>> "b"
>> #(NIL "b")
>> 
>> Parsing the string suggests that the order of operations may be different in cl-ppcre than in perl. Is this intentional?
>> 
>> SOIREE-ICALENDAR> (cl-ppcre:parse-string "^T(a)|(b)$")
>> (:ALTERNATION (:SEQUENCE :START-ANCHOR #\T (:REGISTER #\a))
>>  (:SEQUENCE (:REGISTER #\b) :END-ANCHOR))
>> 
>> thanks,
>> 
>> Cyrus
>> 
>> 
>> _______________________________________________
>> cl-ppcre-devel site list
>> cl-ppcre-devel at common-lisp.net
>> http://common-lisp.net/mailman/listinfo/cl-ppcre-devel
>> 
> 
> _______________________________________________
> cl-ppcre-devel site list
> cl-ppcre-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/cl-ppcre-devel





More information about the Cl-ppcre-devel mailing list