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

Edi Weitz edi at agharta.de
Fri Apr 13 12:12:05 UTC 2012


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
>




More information about the Cl-ppcre-devel mailing list