for some background, perlre (5.008) states:
The following equivalences to Unicode \p{} constructs and equivale
+nt
backslash character classes (if available), will hold:
[:...:] \p{...} backslash
alpha IsAlpha
alnum IsAlnum
ascii IsASCII
blank IsSpace
cntrl IsCntrl
digit IsDigit \d
graph IsGraph
lower IsLower
print IsPrint
punct IsPunct
space IsSpace
IsSpacePerl \s
upper IsUpper
word IsWord
xdigit IsXDigit
<em>For example "[:lower:]" and "\p{IsLower}" are equivalent.</em>
if your results match mine,
#!/usr/bin/perl
use strict;
use warnings;
$|++;
my %classes= qw/
alpha IsAlpha
alnum IsAlnum
ascii IsASCII
blank IsBlank
cntrl IsCntrl
digit IsDigit
graph IsGraph
lower IsLower
print IsPrint
punct IsPunct
space IsSpace
upper IsUpper
word IsWord
xdigit IsXDigit
/;
for( keys %classes )
{
my( $r_posix, $r_unicode )= ( qr/[[:$_:]]/, qr/\p{$classes{$_}}/ );
print "testing $r_posix and $r_unicode$/";
for my $x (0x00..0x7e)
{
local $_= chr $x;
printf "0x%x (%3d.) differ$/" => $x, $x
if /$r_posix/ xor /$r_unicode/;
}
}
__END__
testing (?-xism:[[:digit:]]) and (?-xism:\p{IsDigit})
testing (?-xism:[[:upper:]]) and (?-xism:\p{IsUpper})
testing (?-xism:[[:xdigit:]]) and (?-xism:\p{IsXDigit})
testing (?-xism:[[:cntrl:]]) and (?-xism:\p{IsCntrl})
testing (?-xism:[[:alnum:]]) and (?-xism:\p{IsAlnum})
testing (?-xism:[[:space:]]) and (?-xism:\p{IsSpace})
testing (?-xism:[[:print:]]) and (?-xism:\p{IsPrint})
testing (?-xism:[[:ascii:]]) and (?-xism:\p{IsASCII})
testing (?-xism:[[:word:]]) and (?-xism:\p{IsWord})
testing (?-xism:[[:alpha:]]) and (?-xism:\p{IsAlpha})
testing (?-xism:[[:punct:]]) and (?-xism:\p{IsPunct})
0x24 ( 36.) differ
0x2b ( 43.) differ
0x3c ( 60.) differ
0x3d ( 61.) differ
0x3e ( 62.) differ
0x5e ( 94.) differ
0x60 ( 96.) differ
0x7c (124.) differ
0x7e (126.) differ
testing (?-xism:[[:lower:]]) and (?-xism:\p{IsLower})
testing (?-xism:[[:blank:]]) and (?-xism:\p{IsBlank})
testing (?-xism:[[:graph:]]) and (?-xism:\p{IsGraph})
then i'd list this as a bug, and contact p5p. it seems only [[:punct:]] and \p{IsPunct} differ. this is not expected behavior.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|