<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel about="http://blog.gmane.org/gmane.comp.lang.perl.perl5.porters">
    <title>gmane.comp.lang.perl.perl5.porters</title>
    <link>http://blog.gmane.org/gmane.comp.lang.perl.perl5.porters</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64642"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64640"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64638"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64637"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64622"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64621"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64609"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64598"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64597"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64596"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64594"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64590"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64574"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64570"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64553"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64541"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64537"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64534"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64531"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64521"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64642">
    <title>Smoke [5.11.0] 34995 FAIL(F) MSWin32 WinXP/.Net SP3 (x86/2 cpu)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64642</link>
    <description>Automated smoke report for 5.11.0 patch 34995
maldoror.bath.planit.group: Intel(R) Core(TM)2 CPU 6700 &lt; at &gt; 2.66GHz(~2660 MHz) (x86/2 cpu)
    on        MSWin32 - WinXP/.Net SP3
    using     cl version 13.10.3077
    smoketime 5 hours 30 minutes (average 16 minutes 32 seconds)

Summary: FAIL(F)

O = OK  F = Failure(s), extended report at the bottom
X = Failure(s) under TEST but not under harness
? = still running or test results not (yet) available
Build failures during:       - = unknown or N/A
c = Configure, m = make, M = make (after miniperl), t = make test-prep

   34995     Configuration (common) -DCCTYPE=MSVC70FREE -DINST_TOP=$(INST_DRV)\Smoke\doesntexist
----------- ---------------------------------------------------------
O O         
O O         -Dusemymalloc
O O         -Duselargefiles
O O         -Duselargefiles -Dusemymalloc
O O         -Duseithreads -Uuseimpsys
O O         -Duseithreads -Uuseimpsys -Dusemymalloc
O O         -Duseithreads -Uuseimpsys -Duselargefiles
O O         -Duseithreads -Uuseimpsys -Duselargefiles -Dusemymalloc
O F         -Duseithreads
O O         -Duseithreads -Duselargefiles
| +--------- -DDEBUGGING
+----------- no debugging


Locally applied patches:
    DEVEL
    SMOKE34995

Failures: (common-args) -DCCTYPE=MSVC70FREE -DINST_TOP=$(INST_DRV)\Smoke\doesntexist
[default] -DDEBUGGING -Duseithreads
../ext/IO/t/io_sock.t.......................................FAILED
../ext/PerlIO/t/ioleaks.t...................................FAILED
../lib/Attribute/Handlers/t/linerep.t.......................FAILED

Compiler messages(MSWin32):
Cwd.xs(77) : warning C4101: 'symlink' : unreferenced local variable

</description>
    <dc:creator>Steve Hay</dc:creator>
    <dc:date>2008-12-04T04:28:00</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64640">
    <title>PATCH [perl #58430] Unicode::UCD::casefold() does not work as documented, nor prob as intended</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64640</link>
    <description>  Attached is a patch for this problem.  The root of the problem is that 
casefold() did not realize that there could be multiple lines in the 
input file for a given character, and so retained only information from 
whatever happened to be the last line.  I solved this by adding fields 
to the returned hash to return information from the other lines.  The 
existing fields return the exact same information as before, so no 
existing code should be broken.

casefold() was also expecting syntax in the Unicode database that was 
changed in Version 3.2 (We're at 5.1 now).  I changed it so it accepts 
either syntax, so that it can correctly be run on old and new versions 
of Unicode.

I also took the liberty of significantly upgrading the documentation for 
this module, correcting wrong statements, broken links, using better pod 
constructs, etc, and added detail about the interface so that hopefully 
a reader won't have to experiment or read the code, as I had to do, to 
find out what really gets returned.
--- UCD.pm.blead2008-11-17 04:58:31.000000000 -0700
+++ UCD.pm2008-12-03 19:22:07.000000000 -0700
&lt; at &gt;&lt; at &gt; -61,9 +61,20 &lt; at &gt;&lt; at &gt;
 
 =head1 DESCRIPTION
 
-The Unicode::UCD module offers a simple interface to the Unicode
+The Unicode::UCD module offers a series of functions that
+provide a simple interface to the Unicode
 Character Database.
 
+=head2 code point argument
+
+Some of the functions are called with a I&lt;code point argument&gt;, which is either
+a decimal or a hexadecimal scalar designating a Unicode code point, or C&lt;U+&gt;
+followed by hexadecimals designating a Unicode code point.  In other words, if
+you want a code point to be interpreted as a hexadecimal number, you must
+prefix it with either C&lt;0x&gt; or C&lt;U+&gt;, because a string like e.g. C&lt;123&gt; will be
+interpreted as a decimal code point.  Also note that Unicode is B&lt;not&gt; limited
+to 16 bits (the number of Unicode code points is open-ended, in theory
+unlimited): you may have more than 4 hexdigits.
 =cut
 
 my $UNICODEFH;
&lt; at &gt;&lt; at &gt; -92,46 +103,136 &lt; at &gt;&lt; at &gt;
     return $f;
 }
 
-=head2 charinfo
+=head2 B&lt;charinfo()&gt;
 
     use Unicode::UCD 'charinfo';
 
     my $charinfo = charinfo(0x41);
 
-charinfo() returns a reference to a hash that has the following fields
-as defined by the Unicode standard:
+This returns information about the input L&lt;/code point argument&gt;
+as a reference to a hash of fields as defined by the Unicode
+standard.  If the L&lt;/code point argument&gt; is not assigned in the standard
+(i.e., has the general category C&lt;Cn&gt; meaning C&lt;Unassigned&gt;)
+or is a non-character (meaning it is guaranteed to never be assigned in
+the standard),
+B&lt;undef&gt; is returned.
+
+Fields that aren't applicable to the particular code point argument exist in the
+returned hash, and are empty. 
+
+The keys in the hash with the meanings of their values are:
+
+=over
+
+=item B&lt;code&gt;
+
+the input L&lt;/code point argument&gt; expressed in hexadecimal, with leading zeros
+added if necessary to make it contain at least four hexdigits
+
+=item B&lt;name&gt;
+
+name of I&lt;code&gt;, all IN UPPER CASE.
+Some control-type code points do not have names.
+This field will be empty for C&lt;Surrogate&gt; and C&lt;Private Use&gt; code points,
+and for the others without a name,
+it will contain a description enclosed in angle brackets, like
+C&lt;E&lt;lt&gt;controlE&lt;gt&gt;&gt;.
+
+
+=item B&lt;category&gt;
+
+The short name of the general category of I&lt;code&gt;.
+This will match one of the keys in the hash returned by L&lt;/general_categories()&gt;.
+
+=item B&lt;combining&gt;
+
+the combining class number for I&lt;code&gt; used in the Canonical Ordering Algorithm.
+For Unicode 5.1, this is described in Section 3.11 C&lt;Canonical Ordering Behavior&gt;
+available at
+L&lt;http://www.unicode.org/versions/Unicode5.1.0/&gt;
+
+=item B&lt;bidi&gt;
+
+bidirectional type of I&lt;code&gt;.
+This will match one of the keys in the hash returned by L&lt;/bidi_types()&gt;.
+
+=item B&lt;decomposition&gt;
+
+is empty if I&lt;code&gt; has no decomposition; or is one or more codes
+(separated by spaces) that taken in order represent a decomposition for
+I&lt;code&gt;.  Each has at least four hexdigits.
+The codes may be preceded by a word enclosed in angle brackets then a space,
+like C&lt;E&lt;lt&gt;compatE&lt;gt&gt; &gt;, giving the type of decomposition
+
+=item B&lt;decimal&gt;
+
+if I&lt;code&gt; is a decimal digit this is its integer numeric value
+
+=item B&lt;digit&gt;
+
+if I&lt;code&gt; represents a whole number, this is its integer numeric value
+
+=item B&lt;numeric&gt;
+
+if I&lt;code&gt; represents a whole or rational number, this is its numeric value.
+Rational values are expressed as a string like C&lt;1/4&gt;.
+
+=item B&lt;mirrored&gt;
+
+C&lt;Y&gt; or C&lt;N&gt; designating if I&lt;code&gt; is mirrored in bidirectional text
+
+=item B&lt;unicode10&gt;
+
+name of I&lt;code&gt; in the Unicode 1.0 standard if one
+existed for this code point and is different from the current name
+
+=item B&lt;comment&gt;
+
+ISO 10646 comment field.
+It appears in parentheses in the ISO 10646 names list,
+or contains an asterisk to indicate there is
+a note for this code point in Annex P of that standard.
+
+=item B&lt;upper&gt;
+
+is empty if there is no single code point uppercase mapping for I&lt;code&gt;;
+otherwise it is that mapping expressed as at least four hexdigits.
+(L&lt;/casespec()&gt; should be used in addition to B&lt;charinfo()&gt;
+for case mappings when the calling program can cope with multiple code point
+mappings.)
+
+=item B&lt;lower&gt;
+
+is empty if there is no single code point lowercase mapping for I&lt;code&gt;;
+otherwise it is that mapping expressed as at least four hexdigits.
+(L&lt;/casespec()&gt; should be used in addition to B&lt;charinfo()&gt;
+for case mappings when the calling program can cope with multiple code point
+mappings.)
+
+=item B&lt;title&gt;
 
-    key
+is empty if there is no single code point titlecase mapping for I&lt;code&gt;;
+otherwise it is that mapping expressed as at least four hexdigits.
+(L&lt;/casespec()&gt; should be used in addition to B&lt;charinfo()&gt;
+for case mappings when the calling program can cope with multiple code point
+mappings.)
 
-    code             code point with at least four hexdigits
-    name             name of the character IN UPPER CASE
-    category         general category of the character
-    combining        classes used in the Canonical Ordering Algorithm
-    bidi             bidirectional type
-    decomposition    character decomposition mapping
-    decimal          if decimal digit this is the integer numeric value
-    digit            if digit this is the numeric value
-    numeric          if numeric is the integer or rational numeric value
-    mirrored         if mirrored in bidirectional text
-    unicode10        Unicode 1.0 name if existed and different
-    comment          ISO 10646 comment field
-    upper            uppercase equivalent mapping
-    lower            lowercase equivalent mapping
-    title            titlecase equivalent mapping
-
-    block            block the character belongs to (used in \p{In...})
-    script           script the character belongs to
-
-If no match is found, a reference to an empty hash is returned.
-
-The C&lt;block&gt; property is the same as returned by charinfo().  It is
-not defined in the Unicode Character Database proper (Chapter 4 of the
-Unicode 3.0 Standard, aka TUS3) but instead in an auxiliary database
-(Chapter 14 of TUS3).  Similarly for the C&lt;script&gt; property.
+=item B&lt;block&gt;
+
+block I&lt;code&gt; belongs to (used in \p{In...}).
+See L&lt;/Blocks versus Scripts&gt;.
+
+
+=item B&lt;script&gt;
+
+script I&lt;code&gt; belongs to.
+See L&lt;/Blocks versus Scripts&gt;.
+
+=back
 
 Note that you cannot do (de)composition and casing based solely on the
-above C&lt;decomposition&gt; and C&lt;lower&gt;, C&lt;upper&gt;, C&lt;title&gt;, properties,
-you will need also the compexcl(), casefold(), and casespec() functions.
+I&lt;decomposition&gt;, I&lt;combining&gt;, I&lt;lower&gt;, I&lt;upper&gt;, and I&lt;title&gt; fields;
+you will need also the L&lt;/compexcl()&gt;, and L&lt;/casespec()&gt; functions.
 
 =cut
 
&lt; at &gt;&lt; at &gt; -305,29 +406,30 &lt; at &gt;&lt; at &gt;
     _search($range, 0, $#$range, $code);
 }
 
-=head2 charblock
+=head2 B&lt;charblock()&gt;
 
     use Unicode::UCD 'charblock';
 
     my $charblock = charblock(0x41);
     my $charblock = charblock(1234);
-    my $charblock = charblock("0x263a");
+    my $charblock = charblock(0x263a);
     my $charblock = charblock("U+263a");
 
     my $range     = charblock('Armenian');
 
-With a B&lt;code point argument&gt; charblock() returns the I&lt;block&gt; the character
-belongs to, e.g.  C&lt;Basic Latin&gt;.  Note that not all the character
-positions within all blocks are defined.
+With a L&lt;/code point argument&gt; charblock() returns the I&lt;block&gt; the code point
+belongs to, e.g.  C&lt;Basic Latin&gt;.
+If the code point is unassigned, this returns the block it would belong to if
+it were assigned (which it may in future versions of the Unicode Standard).
 
 See also L&lt;/Blocks versus Scripts&gt;.
 
 If supplied with an argument that can't be a code point, charblock() tries
-to do the opposite and interpret the argument as a character block. The
+to do the opposite and interpret the argument as a code point block. The
 return value is a I&lt;range&gt;: an anonymous list of lists that contain
 I&lt;start-of-range&gt;, I&lt;end-of-range&gt; code point pairs. You can test whether
-a code point is in a range using the L&lt;/charinrange&gt; function. If the
-argument is not a known character block, C&lt;undef&gt; is returned.
+a code point is in a range using the L&lt;/charinrange()&gt; function. If the
+argument is not a known code point block, B&lt;undef&gt; is returned.
 
 =cut
 
&lt; at &gt;&lt; at &gt; -369,7 +471,7 &lt; at &gt;&lt; at &gt;
     }
 }
 
-=head2 charscript
+=head2 B&lt;charscript()&gt;
 
     use Unicode::UCD 'charscript';
 
&lt; at &gt;&lt; at &gt; -379,17 +481,18 &lt; at &gt;&lt; at &gt;
 
     my $range      = charscript('Thai');
 
-With a B&lt;code point argument&gt; charscript() returns the I&lt;script&gt; the
-character belongs to, e.g.  C&lt;Latin&gt;, C&lt;Greek&gt;, C&lt;Han&gt;.
-
-See also L&lt;/Blocks versus Scripts&gt;.
+With a L&lt;/code point argument&gt; charscript() returns the I&lt;script&gt; the
+code point belongs to, e.g.  C&lt;Latin&gt;, C&lt;Greek&gt;, C&lt;Han&gt;.
+If the code point is unassigned, it returns B&lt;undef&gt;
 
 If supplied with an argument that can't be a code point, charscript() tries
-to do the opposite and interpret the argument as a character script. The
+to do the opposite and interpret the argument as a code point script. The
 return value is a I&lt;range&gt;: an anonymous list of lists that contain
 I&lt;start-of-range&gt;, I&lt;end-of-range&gt; code point pairs. You can test whether a
-code point is in a range using the L&lt;/charinrange&gt; function. If the
-argument is not a known character script, C&lt;undef&gt; is returned.
+code point is in a range using the L&lt;/charinrange()&gt; function. If the
+argument is not a known code point script, B&lt;undef&gt; is returned.
+
+See also L&lt;/Blocks versus Scripts&gt;.
 
 =cut
 
&lt; at &gt;&lt; at &gt; -434,14 +537,14 &lt; at &gt;&lt; at &gt;
     }
 }
 
-=head2 charblocks
+=head2 B&lt;charblocks()&gt;
 
     use Unicode::UCD 'charblocks';
 
     my $charblocks = charblocks();
 
 charblocks() returns a reference to a hash with the known block names
-as the keys, and the code point ranges (see L&lt;/charblock&gt;) as the values.
+as the keys, and the code point ranges (see L&lt;/charblock()&gt;) as the values.
 
 See also L&lt;/Blocks versus Scripts&gt;.
 
&lt; at &gt;&lt; at &gt; -452,14 +555,14 &lt; at &gt;&lt; at &gt;
     return dclone \%BLOCKS;
 }
 
-=head2 charscripts
+=head2 B&lt;charscripts()&gt;
 
     use Unicode::UCD 'charscripts';
 
     my $charscripts = charscripts();
 
 charscripts() returns a reference to a hash with the known script
-names as the keys, and the code point ranges (see L&lt;/charscript&gt;) as
+names as the keys, and the code point ranges (see L&lt;/charscript()&gt;) as
 the values.
 
 See also L&lt;/Blocks versus Scripts&gt;.
&lt; at &gt;&lt; at &gt; -471,48 +574,12 &lt; at &gt;&lt; at &gt;
     return dclone \%SCRIPTS;
 }
 
-=head2 Blocks versus Scripts
-
-The difference between a block and a script is that scripts are closer
-to the linguistic notion of a set of characters required to present
-languages, while block is more of an artifact of the Unicode character
-numbering and separation into blocks of (mostly) 256 characters.
-
-For example the Latin B&lt;script&gt; is spread over several B&lt;blocks&gt;, such
-as C&lt;Basic Latin&gt;, C&lt;Latin 1 Supplement&gt;, C&lt;Latin Extended-A&gt;, and
-C&lt;Latin Extended-B&gt;.  On the other hand, the Latin script does not
-contain all the characters of the C&lt;Basic Latin&gt; block (also known as
-the ASCII): it includes only the letters, and not, for example, the digits
-or the punctuation.
-
-For blocks see http://www.unicode.org/Public/UNIDATA/Blocks.txt
-
-For scripts see UTR #24: http://www.unicode.org/unicode/reports/tr24/
-
-=head2 Matching Scripts and Blocks
-
-Scripts are matched with the regular-expression construct
-C&lt;\p{...}&gt; (e.g. C&lt;\p{Tibetan}&gt; matches characters of the Tibetan script),
-while C&lt;\p{In...}&gt; is used for blocks (e.g. C&lt;\p{InTibetan}&gt; matches
-any of the 256 code points in the Tibetan block).
-
-=head2 Code Point Arguments
-
-A I&lt;code point argument&gt; is either a decimal or a hexadecimal scalar
-designating a Unicode character, or C&lt;U+&gt; followed by hexadecimals
-designating a Unicode character.  In other words, if you want a code
-point to be interpreted as a hexadecimal number, you must prefix it
-with either C&lt;0x&gt; or C&lt;U+&gt;, because a string like e.g. C&lt;123&gt; will
-be interpreted as a decimal code point.  Also note that Unicode is
-B&lt;not&gt; limited to 16 bits (the number of Unicode characters is
-open-ended, in theory unlimited): you may have more than 4 hexdigits.
-
-=head2 charinrange
+=head2 B&lt;charinrange()&gt;
 
 In addition to using the C&lt;\p{In...}&gt; and C&lt;\P{In...}&gt; constructs, you
 can also test whether a code point is in the I&lt;range&gt; as returned by
-L&lt;/charblock&gt; and L&lt;/charscript&gt; or as the values of the hash returned
-by L&lt;/charblocks&gt; and L&lt;/charscripts&gt; by using charinrange():
+L&lt;/charblock()&gt; and L&lt;/charscript()&gt; or as the values of the hash returned
+by L&lt;/charblocks()&gt; and L&lt;/charscripts()&gt; by using charinrange():
 
     use Unicode::UCD qw(charscript charinrange);
 
&lt; at &gt;&lt; at &gt; -567,18 +634,19 &lt; at &gt;&lt; at &gt;
     return dclone \%GENERAL_CATEGORIES;
 }
 
-=head2 general_categories
+=head2 B&lt;general_categories()&gt;
 
     use Unicode::UCD 'general_categories';
 
     my $categories = general_categories();
 
-The general_categories() returns a reference to a hash which has short
+This returns a reference to a hash which has short
 general category names (such as C&lt;Lu&gt;, C&lt;Nd&gt;, C&lt;Zs&gt;, C&lt;S&gt;) as keys and long
 names (such as C&lt;UppercaseLetter&gt;, C&lt;DecimalNumber&gt;, C&lt;SpaceSeparator&gt;,
 C&lt;Symbol&gt;) as values.  The hash is reversible in case you need to go
 from the long names to the short names.  The general category is the
-one returned from charinfo() under the C&lt;category&gt; key.
+one returned from
+L&lt;/charinfo()&gt; under the C&lt;category&gt; key.
 
 =cut
 
&lt; at &gt;&lt; at &gt; -605,40 +673,45 &lt; at &gt;&lt; at &gt;
    'ON'  =&gt; 'Other Neutrals',
  ); 
 
-sub bidi_types {
-    return dclone \%BIDI_TYPES;
-}
-
-=head2 bidi_types
+=head2 B&lt;bidi_types()&gt;
 
     use Unicode::UCD 'bidi_types';
 
     my $categories = bidi_types();
 
-The bidi_types() returns a reference to a hash which has the short
+This returns a reference to a hash which has the short
 bidi (bidirectional) type names (such as C&lt;L&gt;, C&lt;R&gt;) as keys and long
 names (such as C&lt;Left-to-Right&gt;, C&lt;Right-to-Left&gt;) as values.  The
 hash is reversible in case you need to go from the long names to the
-short names.  The bidi type is the one returned from charinfo()
+short names.  The bidi type is the one returned from
+L&lt;/charinfo()&gt;
 under the C&lt;bidi&gt; key.  For the exact meaning of the various bidi classes
 the Unicode TR9 is recommended reading:
-http://www.unicode.org/reports/tr9/tr9-17.html
+L&lt;http://www.unicode.org/reports/tr9/&gt;
 (as of Unicode 5.0.0)
 
 =cut
 
-=head2 compexcl
+sub bidi_types {
+    return dclone \%BIDI_TYPES;
+}
+
+=head2 B&lt;compexcl()&gt;
 
     use Unicode::UCD 'compexcl';
 
-    my $compexcl = compexcl("09dc");
+    my $compexcl = compexcl(0x09dc);
 
-The compexcl() returns the composition exclusion (that is, if the
-character should not be produced during a precomposition) of the 
-character specified by a B&lt;code point argument&gt;.
+This returns B&lt;true&gt; if the
+L&lt;/code point argument&gt; should not be produced by composition normalization,
+B&lt;AND&gt; if that fact is not otherwise determinable from the Unicode data base.
+It currently does not return B&lt;true&gt; if the code point has a decomposition
+consisting of another single code point, nor if its decomposition starts
+with a code point whose combining class is non-zero.  Code points that meet
+either of these conditions should also not be produced by composition
+normalization.
 
-If there is a composition exclusion for the character, true is
-returned.  Otherwise, false is returned.
+It returns B&lt;false&gt; otherwise.
 
 =cut
 
&lt; at &gt;&lt; at &gt; -670,46 +743,126 &lt; at &gt;&lt; at &gt;
     return exists $COMPEXCL{$code};
 }
 
-=head2 casefold
+=head2 B&lt;casefold()&gt;
 
     use Unicode::UCD 'casefold';
 
-    my $casefold = casefold("00DF");
+    my $casefold = casefold(0xDF);
+    if (defined $casefold) {
+        my &lt; at &gt;full_fold_hex = split / /, $casefold-&gt;{'full'};
+        my $full_fold_string =
+                    join "", map {chr(hex($_))} &lt; at &gt;full_fold_hex;
+        my &lt; at &gt;turkic_fold_hex =
+                        split / /, ($casefold-&gt;{'turkic'} ne "")
+                                        ? $casefold-&gt;{'turkic'}
+                                        : $casefold-&gt;{'full'};
+        my $turkic_fold_string =
+                        join "", map {chr(hex($_))} &lt; at &gt;turkic_fold_hex;
+    }
+    if (defined $casefold &amp;&amp; $casefold-&gt;{'simple'} ne "") {
+        my $simple_fold_hex = $casefold-&gt;{'simple'};
+        my $simple_fold_string = chr(hex($simple_fold_hex));
+    }
 
-The casefold() returns the locale-independent case folding of the
-character specified by a B&lt;code point argument&gt;.
+This returns the (almost) locale-independent case folding of the
+character specified by the L&lt;/code point argument&gt;.
 
-If there is a case folding for that character, a reference to a hash
+If there is no case folding for that code point, B&lt;undef&gt; is returned.
+
+If there is a case folding for that code point, a reference to a hash
 with the following fields is returned:
 
-    key
+=over
+
+=item B&lt;code&gt;
+
+the input L&lt;/code point argument&gt; expressed in hexadecimal, with leading zeros
+added if necessary to make it contain at least four hexdigits
+
+=item B&lt;full&gt;
+
+one or more codes (separated by spaces) that taken in order give the
+code points for the case folding for I&lt;code&gt;.
+Each has at least four hexdigits.
+
+=item B&lt;simple&gt;
+
+is empty, or is exactly one code with at least four hexdigits which can be used
+as an alternative case folding when the calling program cannot cope with the
+fold being a sequence of multiple code points.  If I&lt;full&gt; is just one code
+point, then I&lt;simple&gt; equals I&lt;full&gt;.  If there is no single code point folding
+defined for I&lt;code&gt;, then I&lt;simple&gt; is the empty string.  Otherwise, it is an
+inferior, but still better-than-nothing alternative folding to I&lt;full&gt;.
+
+=item B&lt;mapping&gt;
+
+is the same as I&lt;simple&gt; if I&lt;simple&gt; is not empty, and it is the same as I&lt;full&gt;
+otherwise.  It can be considered to be the simplest possible folding for
+I&lt;code&gt;.  It is defined primarily for backwards compatibility.
+
+=item B&lt;status&gt;
+
+is C&lt;C&gt; (for C&lt;common&gt;) if the best possible fold is a single code point
+(I&lt;simple&gt; equals I&lt;full&gt; equals I&lt;mapping&gt;).  It is C&lt;S&gt; if there are distinct
+folds, I&lt;simple&gt; and I&lt;full&gt; (I&lt;mapping&gt; equals I&lt;simple&gt;).  And it is C&lt;F&gt; if
+there only a I&lt;full&gt; fold (I&lt;mapping&gt; equals I&lt;full&gt;; I&lt;simple&gt; is empty).  Note
+that this
+describes the contents of I&lt;mapping&gt;.  It is defined primarily for backwards
+compatibility.
+
+On versions 3.1 and earlier of Unicode, I&lt;status&gt; can also be
+C&lt;I&gt; which is the same as C&lt;C&gt; but is a special case for dotted uppercase I and
+dotless lowercase i:
 
-    code             code point with at least four hexdigits
-    status           "C", "F", "S", or "I"
-    mapping          one or more codes separated by spaces
-
-The meaning of the I&lt;status&gt; is as follows:
-
-   C                 common case folding, common mappings shared
-                     by both simple and full mappings
-   F                 full case folding, mappings that cause strings
-                     to grow in length. Multiple characters are separated
-                     by spaces
-   S                 simple case folding, mappings to single characters
-                     where different from F
-   I                 special case for dotted uppercase I and
-                     dotless lowercase i
-                     - If this mapping is included, the result is
-                       case-insensitive, but dotless and dotted I's
-                       are not distinguished
-                     - If this mapping is excluded, the result is not
-                       fully case-insensitive, but dotless and dotted
-                       I's are distinguished
+=over
 
-If there is no case folding for that character, C&lt;undef&gt; is returned.
+=item B&lt;*&gt;
+
+If you use this C&lt;I&gt; mapping, the result is case-insensitive,
+but dotless and dotted I's are not distinguished
+
+=item B&lt;*&gt;
+
+If you exclude this C&lt;I&gt; mapping, the result is not fully case-insensitive, but
+dotless and dotted I's are distinguished
+
+=back
+
+=item B&lt;turkic&gt;
+
+contains any special folding for Turkic languages.  For versions of Unicode
+starting with 3.2, this field is empty unless I&lt;code&gt; has a different folding
+in Turkic languages, in which case it is one or more codes (separated by
+spaces) that taken in order give the code points for the case folding for
+I&lt;code&gt; in those languages.
+Each code has at least four hexdigits.
+Note that this folding does not maintain canonical equivalence without
+additional processing.
+
+For versions of Unicode 3.1 and earlier, this field is empty unless there is a
+special folding for Turkic languages, in which case I&lt;status&gt; is C&lt;I&gt;, and
+I&lt;mapping&gt;, I&lt;full&gt;, I&lt;simple&gt;, and I&lt;turkic&gt; are all equal.  
+
+=back
+
+Programs that want complete generality and the best folding results should use
+the folding contained in the I&lt;full&gt; field.  But note that the fold for some
+code points will be a sequence of multiple code points.
+
+Programs that can't cope with the fold mapping being multiple code points can
+use the folding contained in the I&lt;simple&gt; field, with the loss of some
+generality.  In Unicode 5.1, about 7% of the defined foldings have no single
+code point folding.
+
+The I&lt;mapping&gt; and I&lt;status&gt; fields are provided for backwards compatibility for
+existing programs.  They contain the same values as in previous versions of
+this function.
+
+Locale is not completely independent.  The I&lt;turkic&gt; field contains results to
+use when the locale is a Turkic language.
 
 For more information about case mappings see
-http://www.unicode.org/unicode/reports/tr21/
+L&lt;http://www.unicode.org/unicode/reports/tr21&gt;
 
 =cut
 
&lt; at &gt;&lt; at &gt; -720,11 +873,45 &lt; at &gt;&lt; at &gt;
 if (openunicode(\$CASEFOLDFH, "CaseFolding.txt")) {
     local $_;
     while (&lt;$CASEFOLDFH&gt;) {
-if (/^([0-9A-F]+); ([CFSI]); ([0-9A-F]+(?: [0-9A-F]+)*);/) {
+if (/^([0-9A-F]+); ([CFIST]); ([0-9A-F]+(?: [0-9A-F]+)*);/) {
     my $code = hex($1);
-    $CASEFOLD{$code} = { code    =&gt; $1,
- status  =&gt; $2,
- mapping =&gt; $3 };
+    $CASEFOLD{$code}{'code'} = $1;
+    $CASEFOLD{$code}{'turkic'} = "" unless
+    defined $CASEFOLD{$code}{'turkic'};
+    if ($2 eq 'C' || $2 eq 'I') {# 'I' is only on 3.1 and
+# earlier Unicodes
+# Both entries there (I
+# only checked 3.1) are
+# the same as C, and
+# there are no other
+# entries for those
+# codepoints, so treat
+# as if C, but override
+# the turkic one for
+# 'I'.
+$CASEFOLD{$code}{'status'} = $2;
+$CASEFOLD{$code}{'full'} = $CASEFOLD{$code}{'simple'} =
+$CASEFOLD{$code}{'mapping'} = $3;
+$CASEFOLD{$code}{'turkic'} = $3 if $2 eq 'I';
+    } elsif ($2 eq 'F') {
+$CASEFOLD{$code}{'full'} = $3;
+unless (defined $CASEFOLD{$code}{'simple'}) {
+$CASEFOLD{$code}{'simple'} = "";
+$CASEFOLD{$code}{'mapping'} = $3;
+$CASEFOLD{$code}{'status'} = $2;
+}
+    } elsif ($2 eq 'S') {
+
+
+# There can't be a simple without a full, and simple
+# overrides all but full
+
+$CASEFOLD{$code}{'simple'} = $3;
+$CASEFOLD{$code}{'mapping'} = $3;
+$CASEFOLD{$code}{'status'} = $2;
+    } elsif ($2 eq 'T') {
+$CASEFOLD{$code}{'turkic'} = $3;
+    } # else can't happen because only [CIFST] are possible
 }
     }
     close($CASEFOLDFH);
&lt; at &gt;&lt; at &gt; -743,54 +930,85 &lt; at &gt;&lt; at &gt;
     return $CASEFOLD{$code};
 }
 
-=head2 casespec
+=head2 B&lt;casespec()&gt;
 
     use Unicode::UCD 'casespec';
 
-    my $casespec = casespec("FB00");
+    my $casespec = casespec(0xFB00);
 
-The casespec() returns the potentially locale-dependent case mapping
-of the character specified by a B&lt;code point argument&gt;.  The mapping
-may change the length of the string (which the basic Unicode case
-mappings as returned by charinfo() never do).
+This returns the potentially locale-dependent case mappings of the L&lt;/code point
+argument&gt;.  The mappings may be longer than a single code point (which the basic
+Unicode case mappings as returned by L&lt;/charinfo()&gt; never are).
 
-If there is a case folding for that character, a reference to a hash
-with the following fields is returned:
+If there are no case mappings for the L&lt;/code point argument&gt;, or if all three
+possible mappings (I&lt;lower&gt;, I&lt;title&gt; and I&lt;upper&gt;) result in single code
+points and are locale independent and uncondtional, B&lt;undef&gt; is returned.
 
-    key
+Otherwise, a reference to a hash giving the mappings (or a reference to a hash
+of such hashes, explained below) is returned.
 
-    code             code point with at least four hexdigits
-    lower            lowercase
-    title            titlecase
-    upper            uppercase
-    condition        condition list (may be undef)
-
-The C&lt;condition&gt; is optional.  Where present, it consists of one or
-more I&lt;locales&gt; or I&lt;contexts&gt;, separated by spaces (other than as
-used to separate elements, spaces are to be ignored).  A condition
-list overrides the normal behavior if all of the listed conditions are
-true.  Case distinctions in the condition list are not significant.
-Conditions preceded by "NON_" represent the negation of the condition.
+The keys in the bottom layer hash with the meanings of their values are:
 
-Note that when there are multiple case folding definitions for a
-single code point because of different locales, the value returned by
-casespec() is a hash reference which has the locales as the keys and
-hash references as described above as the values.
+=over
 
-A I&lt;locale&gt; is defined as a 2-letter ISO 3166 country code, possibly
-followed by a "_" and a 2-letter ISO language code (possibly followed
-by a "_" and a variant code).  You can find the lists of those codes,
-see L&lt;Locale::Country&gt; and L&lt;Locale::Language&gt;.
+=item B&lt;code&gt;
+
+the input L&lt;/code point argument&gt; expressed in hexadecimal, with leading zeros
+added if necessary to make it contain at least four hexdigits
+
+=item B&lt;lower&gt;
+
+one or more codes (separated by spaces) that taken in order give the
+code points for the lower case of I&lt;code&gt;.
+Each has at least four hexdigits.
+
+=item B&lt;title&gt;
+
+one or more codes (separated by spaces) that taken in order give the
+code points for the title case of I&lt;code&gt;.
+Each has at least four hexdigits.
+
+=item B&lt;lower&gt;
 
-A I&lt;context&gt; is one of the following choices:
+one or more codes (separated by spaces) that taken in order give the
+code points for the upper case of I&lt;code&gt;.
+Each has at least four hexdigits.
 
-    FINAL            The letter is not followed by a letter of
-                     general category L (e.g. Ll, Lt, Lu, Lm, or Lo)
-    MODERN           The mapping is only used for modern text
-    AFTER_i          The last base character was "i" (U+0069)
+=item B&lt;condition&gt;
+
+the conditions for the mappings to be valid.
+If B&lt;undef&gt;, the mappings are always valid.
+When defined, this field is a list of conditions,
+all of which must be true for the mappings to be valid.
+The list consists of one or more
+I&lt;locales&gt; (see below)
+and/or I&lt;contexts&gt; (explained in the next paragraph),
+separated by spaces.
+(Other than as used to separate elements, spaces are to be ignored.)
+Case distinctions in the condition list are not significant.
+Conditions preceded by "NON_" represent the negation of the condition.
+
+A I&lt;context&gt; is one of those defined in the Unicode standard.
+For Unicode 5.1, they are defined in Section 3.13 C&lt;Default Case Operations&gt;
+available at
+L&lt;http://www.unicode.org/versions/Unicode5.1.0/&gt;
+
+=back
+
+If the return value is to a hash of hashes, it is because there are multiple
+case mapping definitions for a single code point
+(because of different rules for different locales).
+Each sub-hash is of the form above, and the keys of the outer hash are
+the locales, which are
+defined as 2-letter ISO 3166 country codes, possibly
+followed by a "_" and a 2-letter ISO language code (possibly followed
+by a "_" and a variant code).  You can find the lists of all possible locales,
+see L&lt;Locale::Country&gt; and L&lt;Locale::Language&gt;.
+(In Unicode 5.1, the only locales returned by this function
+are C&lt;lt&gt;, C&lt;tr&gt;, and C&lt;az&gt;.)
 
 For more information about case mappings see
-http://www.unicode.org/unicode/reports/tr21/
+L&lt;http://www.unicode.org/unicode/reports/tr21/&gt;
 
 =cut
 
&lt; at &gt;&lt; at &gt; -861,7 +1079,7 &lt; at &gt;&lt; at &gt;
     return ref $CASESPEC{$code} ? dclone $CASESPEC{$code} : $CASESPEC{$code};
 }
 
-=head2 namedseq()
+=head2 B&lt;namedseq()&gt;
 
     use Unicode::UCD 'namedseq';
 
&lt; at &gt;&lt; at &gt; -870,15 +1088,16 &lt; at &gt;&lt; at &gt;
     my %namedseq = namedseq();
 
 If used with a single argument in a scalar context, returns the string
-consisting of the code points of the named sequence, or C&lt;undef&gt; if no
+consisting of the code points of the named sequence, or B&lt;undef&gt; if no
 named sequence by that name exists.  If used with a single argument in
-a list context, returns list of the code points.  If used with no
+a list context, it returns the list of the code points.  If used with no
 arguments in a list context, returns a hash with the names of the
 named sequences as the keys and the named sequences as strings as
-the values.  Otherwise, returns C&lt;undef&gt; or empty list depending
+the values.  Otherwise, it returns B&lt;undef&gt; or an empty list depending
 on the context.
 
-(New from Unicode 4.1.0)
+This function only operates on officially approved (not provisional) named
+sequences.
 
 =cut
 
&lt; at &gt;&lt; at &gt; -920,10 +1139,9 &lt; at &gt;&lt; at &gt;
 
 =head2 Unicode::UCD::UnicodeVersion
 
-Unicode::UCD::UnicodeVersion() returns the version of the Unicode
-Character Database, in other words, the version of the Unicode
-standard the database implements.  The version is a string
-of numbers delimited by dots (C&lt;'.'&gt;).
+This returns the version of the Unicode Character Database, in other words, the
+version of the Unicode standard the database implements.  The version is a
+string of numbers delimited by dots (C&lt;'.'&gt;).
 
 =cut
 
&lt; at &gt;&lt; at &gt; -940,6 +1158,32 &lt; at &gt;&lt; at &gt;
     return $UNICODEVERSION;
 }
 
+=head2 B&lt;Blocks versus Scripts&gt;
+
+The difference between a block and a script is that scripts are closer
+to the linguistic notion of a set of code points required to present
+languages, while block is more of an artifact of the Unicode code point
+numbering and separation into blocks of (mostly) 256 code points.
+
+For example the Latin B&lt;script&gt; is spread over several B&lt;blocks&gt;, such
+as C&lt;Basic Latin&gt;, C&lt;Latin 1 Supplement&gt;, C&lt;Latin Extended-A&gt;, and
+C&lt;Latin Extended-B&gt;.  On the other hand, the Latin script does not
+contain all the characters of the C&lt;Basic Latin&gt; block (also known as
+ASCII): it includes only the letters, and not, for example, the digits
+or the punctuation.
+
+For blocks see L&lt;http://www.unicode.org/Public/UNIDATA/Blocks.txt&gt;
+
+For scripts see UTR #24: L&lt;http://www.unicode.org/unicode/reports/tr24/&gt;
+
+=head2 B&lt;Matching Scripts and Blocks&gt;
+
+Scripts are matched with the regular-expression construct
+C&lt;\p{...}&gt; (e.g. C&lt;\p{Tibetan}&gt; matches characters of the Tibetan script),
+while C&lt;\p{In...}&gt; is used for blocks (e.g. C&lt;\p{InTibetan}&gt; matches
+any of the 256 code points in the Tibetan block).
+
+
 =head2 Implementation Note
 
 The first use of charinfo() opens a read-only filehandle to the Unicode
&lt; at &gt;&lt; at &gt; -951,6 +1195,8 &lt; at &gt;&lt; at &gt;
 
 Does not yet support EBCDIC platforms.
 
+L&lt;/compexcl()&gt; should give a complete list of excluded code points.
+
 =head1 AUTHOR
 
 Jarkko Hietaniemi
--- UCD.t.blead2008-09-19 15:04:14.000000000 -0600
+++ UCD.t2008-12-03 19:20:17.000000000 -0700
&lt; at &gt;&lt; at &gt; -1,6 +1,6 &lt; at &gt;&lt; at &gt;
 #!perl -w
 BEGIN {
-    if (ord("A") == 193) {
+    if (ord("A") != 65) {
 print "1..0 # Skip: EBCDIC\n";
 exit 0;
     }
&lt; at &gt;&lt; at &gt; -18,7 +18,7 &lt; at &gt;&lt; at &gt;
 use Unicode::UCD;
 use Test::More;
 
-BEGIN { plan tests =&gt; 194 };
+BEGIN { plan tests =&gt; 239 };
 
 use Unicode::UCD 'charinfo';
 
&lt; at &gt;&lt; at &gt; -172,6 +172,26 &lt; at &gt;&lt; at &gt;
 is($charinfo-&gt;{block},          'Mathematical Alphanumeric Symbols');
 is($charinfo-&gt;{script},         'Common');
 
+$charinfo = charinfo(0x9FBA);#Bug 58428
+
+is($charinfo-&gt;{code},           '9FBA', 'U+9FBA');
+is($charinfo-&gt;{name},           'CJK UNIFIED IDEOGRAPH-9FBA');
+is($charinfo-&gt;{category},       'Lo');
+is($charinfo-&gt;{combining},      '0');
+is($charinfo-&gt;{bidi},           'L');
+is($charinfo-&gt;{decomposition},  '');
+is($charinfo-&gt;{decimal},        '');
+is($charinfo-&gt;{digit},          '');
+is($charinfo-&gt;{numeric},        '');
+is($charinfo-&gt;{mirrored},       'N');
+is($charinfo-&gt;{unicode10},      '');
+is($charinfo-&gt;{comment},        '');
+is($charinfo-&gt;{upper},          '');
+is($charinfo-&gt;{lower},          '');
+is($charinfo-&gt;{title},          '');
+is($charinfo-&gt;{block},          'CJK Unified Ideographs');
+is($charinfo-&gt;{script},         'Han');
+
 use Unicode::UCD qw(charblock charscript);
 
 # 0x0590 is in the Hebrew block but unused.
&lt; at &gt;&lt; at &gt; -254,6 +274,8 &lt; at &gt;&lt; at &gt;
 is($bt-&gt;{L}, 'Left-to-Right', 'L is Left-to-Right');
 is($bt-&gt;{AL}, 'Right-to-Left Arabic', 'AL is Right-to-Left Arabic');
 
+# If this fails, then maybe one should look at the Unicode changes to see
+# what else might need to be updated.
 is(Unicode::UCD::UnicodeVersion, '5.1.0', 'UnicodeVersion');
 
 use Unicode::UCD qw(compexcl);
&lt; at &gt;&lt; at &gt; -267,15 +289,70 &lt; at &gt;&lt; at &gt;
 
 $casefold = casefold(0x41);
 
-ok($casefold-&gt;{code} eq '0041' &amp;&amp;
-   $casefold-&gt;{status} eq 'C'  &amp;&amp;
-   $casefold-&gt;{mapping} eq '0061', 'casefold 0x41');
+is($casefold-&gt;{code}, '0041', 'casefold 0x41 code');
+is($casefold-&gt;{status}, 'C', 'casefold 0x41 status');
+is($casefold-&gt;{mapping}, '0061', 'casefold 0x41 mapping');
+is($casefold-&gt;{full}, '0061', 'casefold 0x41 full');
+is($casefold-&gt;{simple}, '0061', 'casefold 0x41 simple');
+is($casefold-&gt;{turkic}, "", 'casefold 0x41 turkic');
 
 $casefold = casefold(0xdf);
 
-ok($casefold-&gt;{code} eq '00DF' &amp;&amp;
-   $casefold-&gt;{status} eq 'F'  &amp;&amp;
-   $casefold-&gt;{mapping} eq '0073 0073', 'casefold 0xDF');
+is($casefold-&gt;{code}, '00DF', 'casefold 0xDF code');
+is($casefold-&gt;{status}, 'F', 'casefold 0xDF status');
+is($casefold-&gt;{mapping}, '0073 0073', 'casefold 0xDF mapping');
+is($casefold-&gt;{full}, '0073 0073', 'casefold 0xDF full');
+is($casefold-&gt;{simple}, "", 'casefold 0xDF simple');
+is($casefold-&gt;{turkic}, "", 'casefold 0xDF turkic');
+
+# Do different tests depending on if version &lt;= 3.1, or not.
+(my $version = Unicode::UCD::UnicodeVersion) =~ /^(\d+)\.(\d+)/;
+if (defined $1 &amp;&amp; ($1 &lt;= 2 || $1 == 3 &amp;&amp; defined $2 &amp;&amp; $2 &lt;= 1)) {
+$casefold = casefold(0x130);
+
+is($casefold-&gt;{code}, '0130', 'casefold 0x130 code');
+is($casefold-&gt;{status}, 'I' , 'casefold 0x130 status');
+is($casefold-&gt;{mapping}, '0069', 'casefold 0x130 mapping');
+is($casefold-&gt;{full}, '0069', 'casefold 0x130 full');
+is($casefold-&gt;{simple}, "0069", 'casefold 0x130 simple');
+is($casefold-&gt;{turkic}, "0069", 'casefold 0x130 turkic');
+
+$casefold = casefold(0x131);
+
+is($casefold-&gt;{code}, '0131', 'casefold 0x131 code');
+is($casefold-&gt;{status}, 'I' , 'casefold 0x131 status');
+is($casefold-&gt;{mapping}, '0069', 'casefold 0x131 mapping');
+is($casefold-&gt;{full}, '0069', 'casefold 0x131 full');
+is($casefold-&gt;{simple}, "0069", 'casefold 0x131 simple');
+is($casefold-&gt;{turkic}, "0069", 'casefold 0x131 turkic');
+} else {
+$casefold = casefold(0x49);
+
+is($casefold-&gt;{code}, '0049', 'casefold 0x49 code');
+is($casefold-&gt;{status}, 'C' , 'casefold 0x49 status');
+is($casefold-&gt;{mapping}, '0069', 'casefold 0x49 mapping');
+is($casefold-&gt;{full}, '0069', 'casefold 0x49 full');
+is($casefold-&gt;{simple}, "0069", 'casefold 0x49 simple');
+is($casefold-&gt;{turkic}, "0131", 'casefold 0x49 turkic');
+
+$casefold = casefold(0x130);
+
+is($casefold-&gt;{code}, '0130', 'casefold 0x130 code');
+is($casefold-&gt;{status}, 'F' , 'casefold 0x130 status');
+is($casefold-&gt;{mapping}, '0069 0307', 'casefold 0x130 mapping');
+is($casefold-&gt;{full}, '0069 0307', 'casefold 0x130 full');
+is($casefold-&gt;{simple}, "", 'casefold 0x130 simple');
+is($casefold-&gt;{turkic}, "0069", 'casefold 0x130 turkic');
+}
+
+$casefold = casefold(0x1F88);
+
+is($casefold-&gt;{code}, '1F88', 'casefold 0x1F88 code');
+is($casefold-&gt;{status}, 'S' , 'casefold 0x1F88 status');
+is($casefold-&gt;{mapping}, '1F80', 'casefold 0x1F88 mapping');
+is($casefold-&gt;{full}, '1F00 03B9', 'casefold 0x1F88 full');
+is($casefold-&gt;{simple}, '1F80', 'casefold 0x1F88 simple');
+is($casefold-&gt;{turkic}, "", 'casefold 0x1F88 turkic');
 
 ok(!casefold(0x20));
 
</description>
    <dc:creator>karl williamson</dc:creator>
    <dc:date>2008-12-04T02:51:54</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64638">
    <title>[patch&lt; at &gt;34995] vms.c - Memory freed from wrong pool</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64638</link>
    <description>In trim_unixpath, the wrong free routine was being used resulting in 
data corruption.

-John
wb8tyw&lt; at &gt;qsl.net
Personal Opinion Only
--- /rsync_root/perl/vms/vms.cSun Nov 23 22:54:17 2008
+++ vms/vms.cWed Dec  3 19:05:18 2008
&lt; at &gt;&lt; at &gt; -9345,10 +9345,10 &lt; at &gt;&lt; at &gt;
         char def[NAM$C_MAXRSS+1], *st;
 
         if (getcwd(def, sizeof def,0) == NULL) {
-    Safefree(unixified);
-    Safefree(unixwild);
-    Safefree(lcres);
-    Safefree(tpl);
+    PerlMem_free(unixified);
+    PerlMem_free(unixwild);
+    PerlMem_free(lcres);
+    PerlMem_free(tpl);
     return 0;
 }
 if (!decc_efs_case_preserve) {
</description>
    <dc:creator>John E. Malmberg</dc:creator>
    <dc:date>2008-12-04T01:38:04</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64637">
    <title>Smoke [5.11.0] 34986 FAIL(F) netbsd 4.0 (i386/1 cpu)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64637</link>
    <description>Automated smoke report for 5.11.0 patch 34986
p5netbsd: AMD Duron (686-class) (i386/1 cpu)
    on        netbsd - 4.0
    using     cc version 4.1.2 20061021 prerelease (NetBSD nb3 20061125)
    smoketime 17 hours 20 minutes (average 2 hours 10 minutes)

Summary: FAIL(F)

O = OK  F = Failure(s), extended report at the bottom
X = Failure(s) under TEST but not under harness
? = still running or test results not (yet) available
Build failures during:       - = unknown or N/A
c = Configure, m = make, M = make (after miniperl), t = make test-prep

   34986     Configuration (common) none
----------- ---------------------------------------------------------
O O O O     
O O O O     -Duse64bitint
O O O O     -Duseithreads
O O F O     -Duseithreads -Duse64bitint
| | | +----- PERLIO = perlio -DDEBUGGING
| | +------- PERLIO = stdio  -DDEBUGGING
| +--------- PERLIO = perlio
+----------- PERLIO = stdio


Locally applied patches:
    DEVEL
    SMOKE34986

Failures: (common-args) none
[stdio] -DDEBUGGING -Duseithreads -Duse64bitint
    ../ext/threads/shared/t/waithires.t.........................FAILED
        12

Compiler messages(gcc):
perlio.c: In function 'PerlIOStdio_set_ptrcnt':
perlio.c:3451: warning: pointer targets in assignment differ in signedness
&lt;command line&gt;:1:1: warning: "TIME_HIRES_STAT" redefined
&lt;command line&gt;:1:1: warning: this is the location of the previous definition
/usr/include/sys/cdefs_elf.h:67:20: error: missing binary operator before token "("

</description>
    <dc:creator>Steven Schubiger</dc:creator>
    <dc:date>2008-12-04T01:30:02</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64622">
    <title>5.10.0 "Configure" improvement for 'userelocatableinc' on Solaris 10</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64622</link>
    <description>The 'userelocatableinc' option works incorrectly on Solaris 10 (and
earlier, presumably).  The problem is that the path to the executable
cannot be obtained like on Linux ('/proc/self/exe') or on BSD
('/proc/curproc/file').  But, as suggested by 'almut' on perlmonks
(http://www.perlmonks.org/?node_id=686876).  it can be obtained with
'/proc/self/path/a.out'.  So the solution (tested and working) is to
have in Configure (currently, around line 15563) something like the
following "if ... fi" snippet added, for Solaris 10:

    procselfexe=''
    val="$undef"
    case "$d_readlink" in
    "$define")
        ...
        if $issymlink /proc/self/path/a.out ; then
            $ls -l /proc/self/path/a.out &gt; reflect
            if $contains /`basename $ls` reflect &gt;/dev/null 2&gt;&amp;1; then
                echo "You have Solaris-like /proc/self/path/a.out."
                procselfexe='"/proc/self/path/a.out"'
                val="$define"
            fi
        fi
        ...

I think this also makes $^X return a correct path instead of just
'perl' (I'm not at the office right now, and I forgot to test that).

The technique does not work on Solaris 8, because apparently it does not
support the '/proc/self/path/a.out' mechanism (according to 'almut'). I
don't know about other versions.

Thanks.


</description>
    <dc:creator>Luc St-Louis</dc:creator>
    <dc:date>2008-12-03T01:07:11</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64621">
    <title>[PATCH - 5.10.x] Revert const'ing in cygwin.c (repost)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64621</link>
    <description>Blead Change 32681 (make miniperl -Wwrite-strings clean)
resulted in some build warnings being generated by cygwin.c.
In response, I submitted blead Change 32689 (const'ing in
cygwin.c) to correct these.

Change 33119 to 5.10.x integrates blead Change 32689.
However, since blead Change 32681 cannot be integrated into
5.10.x, cygwin.c is now producing the following build
warnings:

   cygwin.c: In function `do_spawn':
   cygwin.c:125: warning: assignment from incompatible pointer type
   cygwin.c:127: warning: assignment from incompatible pointer type

To correct this, the portion of 5.10.x Change 33119 related
to blead Change 32689 needs to be reverted.  The attached
patch does this.

(This is a repost from my original submission back in October.)
--- perl/cygwin/cygwin.c
+++ perl/cygwin/cygwin.c
&lt; at &gt;&lt; at &gt; -83,8 +83,7 &lt; at &gt;&lt; at &gt;
 do_spawn (char *cmd)
 {
     dTHX;
-    char const **a;
-    char *s,*metachars = "$&amp;*(){}[]'\";\\?&gt;|&lt;~`\n";
+    char **a,*s,*metachars = "$&amp;*(){}[]'\";\\?&gt;|&lt;~`\n";
     const char *command[4];
 
     while (*cmd &amp;&amp; isSPACE(*cmd))
&lt; at &gt;&lt; at &gt; -122,7 +121,7 &lt; at &gt;&lt; at &gt;
     return do_spawnvp("sh",command);
 }
 
-    Newx (PL_Argv,(s-cmd)/2+2,const char*);
+    Newx (PL_Argv,(s-cmd)/2+2,char*);
     PL_Cmd=savepvn (cmd,s-cmd);
     a=PL_Argv;
     for (s=PL_Cmd; *s;) {

</description>
    <dc:creator>Jerry D. Hedden</dc:creator>
    <dc:date>2008-12-03T16:47:51</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64609">
    <title>[PATCH] Configure detection of __attribute__((deprecated))</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64609</link>
    <description>This patch should be enough to enable us using
__attribute__((deprecated)) portably (for eaxmple for functions in
mathoms.c).
</description>
    <dc:creator>Rafael Garcia-Suarez</dc:creator>
    <dc:date>2008-12-03T11:51:36</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64598">
    <title>Perl 5.8.9 RC1 and gcc on AIX</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64598</link>
    <description>Hello,
right now it looks like Perl 5.8.9 RC1 (and 5.10.x / bleed) does not
compiler with gcc on AIX.
I already have submitted a patch for bleed (34983). With this patch
applied to 5.8.9 RC1 you can compile:

Perl 5.8.9 RC1 with gcc 3.3.2
Perl 5.8.9 RC1 with gcc 4.2.4
Perl 5.8.9 RC1 with IBM C/C++ V7
Perl 5.8.9 RC1 with IBM C/C++ V8
Perl 5.8.9 RC1 with IBM C/C++ V9
Perl 5.8.9 RC1 with IBM C/C++ V10

I have tested this on AIX 5.1 / 5.2 / 5.3 / 6.1 (not with all compiler
combinations :-) ).

Settings:

  -Duseshrplib (I think this is mandatory)
  -Dusethreads  (Optional)

So if there are no objections in the next couple of day I vote to
include this patch in 5.8.9.
If you think that the change to Makefile.SH is to sensitive for 5.8.9
then we have to change the README.aix
and remove gcc from the supported compiler list.

A other problem is suidperl:

To make this work on AIX we need a other patch to makefile.SH:

This patch adds the libperl_nonshr.a in front of libperl.a for AIX
(libperl.a is only used for the Dynloader).
Without the patch suidperl simply wont compile/work on AIX and with the
patch suidperl is linked statically
with the exception of the Dynloader.

Should this be fixed for 5.8.9 or should we fix it for 5.10.x / bleed ??


Bye
  Rainer

</description>
    <dc:creator>Rainer Tammer</dc:creator>
    <dc:date>2008-12-03T08:01:12</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64597">
    <title>Bug fixes queued up for Module::Build on VMS.</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64597</link>
    <description>With the following patches, Module::Build is now passing the tests on 
VMS in blead.

Invalid index and missing .packlist:

   http://rt.cpan.org/Ticket/Display.html?id=41389

_detildify on VMS has unexpected trailing '/':

   http://rt.cpan.org/Ticket/Display.html?id=41364

compat.t doing case sensitive filename compare on VMS:

   http://rt.cpan.org/Ticket/Display.html?id=41332

VMS/MMS realclean unlink line created wrong:

http://rt.cpan.org/Ticket/Display.html?id=41331


Not addressed at this time is the issue where the test is expecting that 
the DCL command "PERL" exists and will know to run the correct perl 
needed for the test, and the extra output on some of the tests that 
causes the test harness to report failures.

http://rt.cpan.org/Ticket/Display.html?id=41391

-John
wb8tyw&lt; at &gt;qsl.net
Personal Opinion Only


</description>
    <dc:creator>John E. Malmberg</dc:creator>
    <dc:date>2008-12-03T07:00:12</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64596">
    <title>'distclean' - missing a few leftovers</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64596</link>
    <description>After a 'distclean' I see these files:
  ext/IPC/SysV/Makefile.old
  ext/threads/shared/Makefile.old
Anybody want to clean that up, perchance?
</description>
    <dc:creator>Chip Salzenberg</dc:creator>
    <dc:date>2008-12-03T04:39:35</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64594">
    <title>Smoke [5.11.0] 34986 FAIL(Ft) MSWin32 WinXP/.Net SP3 (x86/2 cpu)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64594</link>
    <description>Automated smoke report for 5.11.0 patch 34986
maldoror.bath.planit.group: Intel(R) Core(TM)2 CPU 6700 &lt; at &gt; 2.66GHz(~2660 MHz) (x86/2 cpu)
    on        MSWin32 - WinXP/.Net SP3
    using     cl version 12.00.8804
    smoketime 4 hours 21 minutes (average 13 minutes 5 seconds)

Summary: FAIL(Ft)

O = OK  F = Failure(s), extended report at the bottom
X = Failure(s) under TEST but not under harness
? = still running or test results not (yet) available
Build failures during:       - = unknown or N/A
c = Configure, m = make, M = make (after miniperl), t = make test-prep

   34986     Configuration (common) -DINST_TOP=$(INST_DRV)\Smoke\doesntexist
----------- ---------------------------------------------------------
O O         
O O         -Dusemymalloc
O O         -Duseithreads -Uuseimpsys
O O         -Duseithreads -Uuseimpsys -Dusemymalloc
O O         -Duseithreads
F t         -Accflags='-DPERL_OLD_COPY_ON_WRITE'
F t         -Accflags='-DPERL_OLD_COPY_ON_WRITE' -Dusemymalloc
F t         -Accflags='-DPERL_OLD_COPY_ON_WRITE' -Duseithreads -Uuseimpsys
F t         -Accflags='-DPERL_OLD_COPY_ON_WRITE' -Duseithreads -Uuseimpsys -Dusemymalloc
F t         -Accflags='-DPERL_OLD_COPY_ON_WRITE' -Duseithreads
| +--------- -DDEBUGGING
+----------- no debugging


Locally applied patches:
    DEVEL
    SMOKE34986

Failures: (common-args) -DINST_TOP=$(INST_DRV)\Smoke\doesntexist
[default] -Accflags='-DPERL_OLD_COPY_ON_WRITE'
[default] -Accflags='-DPERL_OLD_COPY_ON_WRITE' -Dusemymalloc
[default] -Accflags='-DPERL_OLD_COPY_ON_WRITE' -Duseithreads -Uuseimpsys
[default] -Accflags='-DPERL_OLD_COPY_ON_WRITE' -Duseithreads -Uuseimpsys -Dusemymalloc
[default] -Accflags='-DPERL_OLD_COPY_ON_WRITE' -Duseithreads
../ext/Compress/Raw/Zlib/t/07bufsize.t......................FAILED
    Bad plan.  You planned 288 tests but ran 41.
../ext/PerlIO/t/ioleaks.t...................................FAILED
../lib/Attribute/Handlers/t/linerep.t.......................FAILED

Compiler messages(MSWin32):
Cwd.xs(77) : warning C4101: 'symlink' : unreferenced local variable

</description>
    <dc:creator>Steve Hay</dc:creator>
    <dc:date>2008-12-03T03:12:00</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64590">
    <title>34974 breaks MJD/Text-Template-1.45.tar.gz</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64590</link>
    <description>This damn smoker again.

t/11-prepend.......ok
t/12-preprocess....ok
t/13-taint......... Failed 6/21 subtests 
t/14-broken........ok

HTH, good night,
</description>
    <dc:creator>Andreas J. Koenig</dc:creator>
    <dc:date>2008-12-02T22:24:12</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64574">
    <title>[PATCH - 5.8.9] Fix build warning from Change 34974</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64574</link>
    <description>Change 34974 to scope.c produces the following build warning:

scope.c: In function `Perl_leave_scope':
scope.c:623: warning: ISO C90 forbids mixed declarations and code

The attached patch fixes this.
--- perl-5.8.x/scope.c
+++ perl-5.8.x/scope.c
&lt; at &gt;&lt; at &gt; -618,9 +618,10 &lt; at &gt;&lt; at &gt;
     if (base &lt; -1)
 Perl_croak(aTHX_ "panic: corrupt saved stack index");
     while (PL_savestack_ix &gt; base) {
+const int type = SSPOPINT;
+
 TAINT_NOT;
 
-const int type = SSPOPINT;
 switch (type) {
 case SAVEt_ITEM:/* normal string */
     value = (SV*)SSPOPPTR;
</description>
    <dc:creator>Jerry D. Hedden</dc:creator>
    <dc:date>2008-12-02T13:51:08</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64570">
    <title>suidperl on AIX</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64570</link>
    <description>Hello,
I have encountered a little problem with suidperl. As soon as I specify
-Dd_dosuid  to build suidperl on AIX I get this error:

LIBPATH=/daten/source/perl-5.8.9-RC1_32:/usr/local/081119/lib cc_r -q32
-o suidperl -brtl -bdynamic -b32 -bmaxdata:0x80000000 -bE:perl.exp
perlmain.o sperl.o  -L
/usr/opt/perl5.8.9_32/lib/5.8.9/aix-thread-multi/CORE -L
/daten/source/perl-5.8.9-RC1_32 -lperl `cat ext.libs` -lbind -lnsl -ldl
-lld -lm -lcrypt -lpthreads -lc -lbsd
ld: 0711-317 ERROR: Undefined symbol: .Perl_pp_entereval
ld: 0711-317 ERROR: Undefined symbol: .Perl_pp_entersub
ld: 0711-317 ERROR: Undefined symbol: .Perl_pad_new
ld: 0711-317 ERROR: Undefined symbol: .Perl_boot_core_PerlIO
ld: 0711-317 ERROR: Undefined symbol: .Perl_boot_core_UNIVERSAL
ld: 0711-317 ERROR: Undefined symbol: .Perl_boot_core_xsutils
ld: 0711-317 ERROR: Undefined symbol: .Perl_lex_start
ld: 0711-317 ERROR: Undefined symbol: .Perl_yyparse
ld: 0711-317 ERROR: Undefined symbol: .Perl_av_create_and_push
ld: 0711-317 ERROR: Undefined symbol: .Perl_cando
ld: 0711-317 ERROR: Undefined symbol: .Perl_rsignal_save
ld: 0711-317 ERROR: Undefined symbol: .Perl_rsignal_restore
ld: 0711-317 ERROR: Undefined symbol: .Perl_find_script
ld: 0711-317 ERROR: Undefined symbol: Perl_peep
ld: 0711-317 ERROR: Undefined symbol: .Perl_save_op
ld: 0711-317 ERROR: Undefined symbol: .Perl_push_return
ld: 0711-317 ERROR: Undefined symbol: .Perl_create_eval_scope
ld: 0711-317 ERROR: Undefined symbol: .Perl_delete_eval_scope
ld: 0711-317 ERROR: Undefined symbol: .Perl_parse_unicode_opts
ld: 0711-317 ERROR: Undefined symbol: .Perl_get_hash_seed
ld: 0711-317 ERROR: Undefined symbol: .PerlIO_destruct
ld: 0711-317 ERROR: Undefined symbol: .Perl_sv_clean_all
ld: 0711-317 ERROR: Undefined symbol: .PerlIO_cleanup
ld: 0711-317 ERROR: Undefined symbol: .Perl_free_tied_hv_pool
ld: 0711-317 ERROR: Undefined symbol: .Perl_sv_free_arenas
ld: 0711-317 ERROR: Undefined symbol: .Perl_sv_clean_objs
ld: 0711-317 ERROR: Undefined symbol: Perl_sighandler
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information.
make: 1254-004 The error code from the last command is 8.

The rest builds without a problem.
I can solve this problem with the inclusion of -lperl_nonshr after sperl.o.

I am not sure why this is necessary.

In my current developement environment I have achieved this with the
following patch against Makefile.SH:

1. add aix_fixup='' right after ldlibpth=''
2. add aix_fixup="-lperl_nonshr" in the [case "$useshrplib" in] case
3. use LLIBPERL_SUIDPERL= $aix_fixup $linklibperl instead of LLIBPER=
$linklibperl for suidperl later

This is only a quick hack not a permanent solution.

So my question:

1. Is suidperl supposed to build shared ?
2. Why does perl build without a problem - what am I missing ?

Bye
  Rainer


</description>
    <dc:creator>Rainer Tammer</dc:creator>
    <dc:date>2008-12-02T12:24:15</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64553">
    <title>Adding autodie to Perl 5.10.1?</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64553</link>
    <description>G'day p5p, and particularly Rafael and Dave,

Back in July, Rafael said that putting autodie[1] in the core was a good
idea[2].  Since then I've sent through a big (3,500 line) patch, and then
promptly got smacked by a massive work schedule that had me go back to
lurking on p5p[3].

Since then autodie has changed a little (mainly extra polish), so I'd like
to provide a new patch.  However I want to make sure that when I do so, it's
done in a way that makes everyone's lives as easy as possible.

In the interests of having that happen, I've got a few questions:

* Are we still happy with autodie going in core for 5.10.1?

* Am I correct that a big patch against the current blead is the best thing
to provide?

* Is there a deadline I need to meet?

Many thanks,

Paul

[1] http://search.cpan.org/perldoc?autodie
[2] http://markmail.org/message/uvc5q35uqjs75teu
[3] I'm still in the massive work schedule, I don't even get to go home
    for another three weeks!

</description>
    <dc:creator>Paul Fenwick</dc:creator>
    <dc:date>2008-12-02T02:26:30</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64541">
    <title>[PATCH] Eliminate setenv_getix()</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64541</link>
    <description>Change 34940 made *_setenv_getix static.  However, when built
under Cygwin, the following build warning is produced:
   util.c:1779: warning: 'S_setenv_getix' defined but not used

Since it's only used in one place, the easiest way to fix
the above is to eliminate it.  That attached patch does that.
--- perl-current/embed.fnc
+++ perl-current/embed.fnc
&lt; at &gt;&lt; at &gt; -951,9 +951,6 &lt; at &gt;&lt; at &gt;
 p|OP*|scope|NULLOK OP* o
 Ap|char*|screaminstr|NN SV *bigstr|NN SV *littlestr|I32 start_shift \
 |I32 end_shift|NN I32 *old_posp|I32 last
-#if !defined(VMS) &amp;&amp; defined(PERL_IN_UTIL_C)
-s|I32|setenv_getix|NN const char* nam
-#endif
 Apd|void|setdefout|NULLOK GV* gv
 Ap|HEK*|share_hek|NN const char* str|I32 len|U32 hash
 #if defined(HAS_SIGACTION) &amp;&amp; defined(SA_SIGINFO)

--- perl-current/embed.h
+++ perl-current/embed.h
&lt; at &gt;&lt; at &gt; -839,11 +839,6 &lt; at &gt;&lt; at &gt;
 #define scopePerl_scope
 #endif
 #define screaminstrPerl_screaminstr
-#if !defined(VMS) &amp;&amp; defined(PERL_IN_UTIL_C)
-#ifdef PERL_CORE
-#define setenv_getixS_setenv_getix
-#endif
-#endif
 #define setdefoutPerl_setdefout
 #define share_hekPerl_share_hek
 #if defined(HAS_SIGACTION) &amp;&amp; defined(SA_SIGINFO)
&lt; at &gt;&lt; at &gt; -3195,11 +3190,6 &lt; at &gt;&lt; at &gt;
 #define scope(a)Perl_scope(aTHX_ a)
 #endif
 #define screaminstr(a,b,c,d,e,f)Perl_screaminstr(aTHX_ a,b,c,d,e,f)
-#if !defined(VMS) &amp;&amp; defined(PERL_IN_UTIL_C)
-#ifdef PERL_CORE
-#define setenv_getix(a)S_setenv_getix(aTHX_ a)
-#endif
-#endif
 #define setdefout(a)Perl_setdefout(aTHX_ a)
 #define share_hek(a,b,c)Perl_share_hek(aTHX_ a,b,c)
 #if defined(HAS_SIGACTION) &amp;&amp; defined(SA_SIGINFO)

--- perl-current/proto.h
+++ perl-current/proto.h
&lt; at &gt;&lt; at &gt; -2962,13 +2962,6 &lt; at &gt;&lt; at &gt;
 #define PERL_ARGS_ASSERT_SCREAMINSTR\
 assert(bigstr); assert(littlestr); assert(old_posp)
 
-#if !defined(VMS) &amp;&amp; defined(PERL_IN_UTIL_C)
-STATIC I32S_setenv_getix(pTHX_ const char* nam)
-__attribute__nonnull__(pTHX_1);
-#define PERL_ARGS_ASSERT_SETENV_GETIX\
-assert(nam)
-
-#endif
 PERL_CALLCONV voidPerl_setdefout(pTHX_ GV* gv);
 PERL_CALLCONV HEK*Perl_share_hek(pTHX_ const char* str, I32 len, U32 hash)
 __attribute__nonnull__(pTHX_1);

--- perl-current/util.c
+++ perl-current/util.c
&lt; at &gt;&lt; at &gt; -1667,9 +1667,16 &lt; at &gt;&lt; at &gt;
 #ifndef PERL_USE_SAFE_PUTENV
     if (!PL_use_safe_putenv) {
     /* most putenv()s leak, so we manipulate environ directly */
-    register I32 i=setenv_getix(nam);          /* where does it go? */
+    register I32 i;
+    register const I32 len = strlen(nam);
     int nlen, vlen;
 
+    /* where does it go? */
+    for (i = 0; environ[i]; i++) {
+        if (strnEQ(environ[i],nam,len) &amp;&amp; environ[i][len] == '=')
+            break;
+    }
+
     if (environ == PL_origenviron) {   /* need we copy environment? */
        I32 j;
        I32 max;
&lt; at &gt;&lt; at &gt; -1773,30 +1780,6 &lt; at &gt;&lt; at &gt;
 
 #endif /* WIN32 || NETWARE */
 
-#ifndef PERL_MICRO
-static I32
-S_setenv_getix(pTHX_ const char *nam)
-{
-    register I32 i;
-    register const I32 len = strlen(nam);
-
-    PERL_ARGS_ASSERT_SETENV_GETIX;
-    PERL_UNUSED_CONTEXT;
-
-    for (i = 0; environ[i]; i++) {
-if (
-#ifdef WIN32
-    strnicmp(environ[i],nam,len) == 0
-#else
-    strnEQ(environ[i],nam,len)
-#endif
-    &amp;&amp; environ[i][len] == '=')
-    break;/* strnEQ must come first to avoid */
-    }/* potential SEGV's */
-    return i;
-}
-#endif /* !PERL_MICRO */
-
 #endif /* !VMS &amp;&amp; !EPOC*/
 
 #ifdef UNLINK_ALL_VERSIONS
</description>
    <dc:creator>Jerry D. Hedden</dc:creator>
    <dc:date>2008-12-01T17:47:35</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64537">
    <title>Perl5 Bug Summary</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64537</link>
    <description>Perl5 Bug Summary

http://rt.perl.org/rt3/NoAuth/perl5/Overview.html
Generated at Mon Dec 1 14:15:02 2008 GMT
-------------------------------------------------------------------------------

  * Numbers
  * New Issues
  * Overview of Open Issues
  * Ticket Status By Version
  * Requestors with most open tickets

-------------------------------------------------------------------------------

Numbers

Ticket Counts: 281 new + 1019 open = 1300
Created this week: 11
Closed this week: 17

-------------------------------------------------------------------------------

New Issues

New issues that have not been responded to yet

1 - 2 weeks old
60724 Segmentation fault in Perl_csighandler when receiving SIGCHLD during
      thread creation
60614 Error during compiling Perl
2 - 3 weeks old
60464 Invalid RE match in 5.10.0 (regression from 5.8.8)
3 - 4 weeks old
60326 [Bug in maint-perl-latest] utf8+locale substitution cause the Perl
      interpreter to hang.
4 - 5 weeks old
60318 Inconsistent math with large numbers
60294 threads::shared resets %hash iterators
5 - 6 weeks old
60136 op/groups.t fails when real group name contains blanks
6 - 7 weeks old
59916 tainted values in ternary conditional
59902 \N{} gives segmentation fault, other weirdness
7 - 8 weeks old
59792 Cannot recurse inside (?|)
59750 File::Find behavior with files among &lt; at &gt;DIRS
59746 Documentation issues with 5.8.8/Math/BigInt.pm
59734 Segfault when using (?|) in regexp.
59662 Cwd::realpath fails on unsearchable directory (AIX)
8 - 9 weeks old
59616 FOLDCHAR regop not produced for \x, \0, \N{U+....}
59610 Error - intalling a Perl 5 8 8
59550 readline returns EBADF at eof in 5.10.0
59498 Segfault on weird but plain Perl in eval on 5.10.0 on Windows
9 - 10 weeks old
59384 DProf reports wrong elapsed times
59378 Get "Malformed UTF-8 character" message
10 - 11 weeks old
11 - 12 weeks old
58848 Not OK: perl 5.11.0 +DEVEL +patchaperlup: on i686-linux-64int 2.6.22-1-k7
      (UNINSTALLED)
58802 make test problem, perl 5.10.0 on AIX 6.1
12 - 13 weeks old
58530 Bus error with constant + overload + stash manipulation + bless
13 - 14 weeks old
58446 perl -d:DProf handles shift of &lt; at &gt;_ with &amp; function wrong
14 - 15 weeks old
15 - 16 weeks old
16 - 17 weeks old
57688 PerlIO::via suggest pre-CLOSE method
17 - 18 weeks old
57518 incorrect lddlflags settings in hints/darwin.sh (perl 5.8.8)
57512 Implicit close()s are silently unchecked for error
18 - 19 weeks old
57288 PerlIO::via::QuotedPrint not flushing
57258 :perlio layer extra FLUSHes
57176 Including XSUB.h before perl.h gives nasty error
19 - 20 weeks old
20 - 21 weeks old
56842 Taint bug with \G and pos() on hash entries
56834 No test coverage for the DO_UTF8() branch of case FF_CHECKCHOP in
      pp_formline
-------------------------------------------------------------------------------

Overview of Open Issues

Operating System        Severity          Type                Perl Version
aix           25        fatal      2      Bug         1       1.0       14
All           17        High     147      core      618       5.004      1
bsdos          1        low      671      CoreDump    7       5.004_00   1
cygwin        26        medium   318      docs       22       5.004_01   1
darwin        57        none       9      HasTest     5       5.004_02   1
dec_osf        8        Normal     2      install    33       5.004_03   1
dos            1        Wishlist  45      library   158       5.004_04   1
freebsd       52                     NeedsTest   8       5.004_05   1
generic       17                          notabug    30       5.005      2
HPUX          19                          notok       1       5.005_01   2
irix           6                          Patch       1       5.005_02   2
Linux        514                          regex      14       5.005_03  26
machten        1                          unknown   296       5.005_04   4
mswin32       71                          utilities  18       5.10.0    94
netbsd         4                                         5.10.1     2
openbsd        5                                              5.11.0    24
os2            2                                              5.6.0     83
powerux        1                                              5.6.1    103
sco            2                                              5.6.2     12
Solaris       72                                              5.7.0     14
sunos          2                                              5.7.1      9
svr4           2                                              5.7.2     18
vms            2                                              5.8.0    141
VOS            1                                              5.8.1     33
Win32         29                                              5.8.2     34
                                                         5.8.3     46
                                                              5.8.4     61
                                                              5.8.5     36
                                                              5.8.6     38
                                                              5.8.7     50
                                                              5.8.8    155
                                                              5.8.9      5
                                                              5.9.0     21
                                                              5.9.1     13
                                                              5.9.2     15
                                                              5.9.3     21
                                                              5.9.4     14
                                                              5.9.5     16
-------------------------------------------------------------------------------

Ticket Status By Version

                                            New or Open                Resolved
1.0                                                  14                      10
5.000                                                 0                       2
5.002                                                 0                       4
5.003                                                 0                       5
5.004                                                 1                       6
5.004_00                                              1                       2
5.004_01                                              1                       4
5.004_02                                              1                       2
5.004_03                                              1                       2
5.004_04                                              1                      45
5.004_05                                              1                       6
5.005                                                 2                      25
5.005_01                                              2                       5
5.005_02                                              2                      81
5.005_03                                             26                     344
5.005_04                                              4                       3
5.6.0                                                83                    1115
5.6.1                                               103                     563
5.6.2                                                12                       8
5.7.0                                                14                    1473
5.7.1                                                 9                      47
5.7.2                                                18                      91
5.8.0                                               141                     560
5.8.1                                                33                      95
5.8.2                                                34                      66
5.8.3                                                46                      89
5.8.4                                                61                     113
5.8.5                                                36                      57
5.8.6                                                38                      59
5.8.7                                                50                      85
5.8.8                                               155                     202
5.8.9                                                 5                       8
5.9.0                                                21                      44
5.9.1                                                13                      13
5.9.2                                                15                      20
5.9.3                                                21                      27
5.9.4                                                14                      20
5.9.5                                                16                      27
5.10.0                                               94                      97
5.10.1                                                2                       0
5.11.0                                               24                       0

-------------------------------------------------------------------------------

Requestors with most open tickets

Nicholas Clark            43
perl-5.8.0&lt; at &gt;ton.iguana.be  25
Mark-Jason Dominus        23
abigail&lt; at &gt;foad.org          13
Stas Bekman               13
"Ed Avis"                 13
Michael G Schwern         11
Zefram                    11
Father Chrysostomos       10
Yitzchak Scott-Thoennes    9

-------------------------------------------------------------------------------

  * Numbers
  * New Issues
  * Overview of Open Issues
  * Ticket Status By Version
  * Requestors with most open tickets

-------------------------------------------------------------------------------
This page is CPU intensive to create, it will be updated only once every 30
minutes


</description>
    <dc:creator>Perl5 Bug Summary</dc:creator>
    <dc:date>2008-12-01T14:15:26</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64534">
    <title>Smoke [5.11.0] 34956 FAIL(F) MSWin32 WinXP/.Net SP3 (x86/2 cpu)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64534</link>
    <description>Automated smoke report for 5.11.0 patch 34956
maldoror.bath.planit.group: Intel(R) Core(TM)2 CPU 6700 &lt; at &gt; 2.66GHz(~2660 MHz) (x86/2 cpu)
    on        MSWin32 - WinXP/.Net SP3
    using     gcc version 3.4.2
    smoketime 5 hours 54 minutes (average 17 minutes 43 seconds)

Summary: FAIL(F)

O = OK  F = Failure(s), extended report at the bottom
X = Failure(s) under TEST but not under harness
? = still running or test results not (yet) available
Build failures during:       - = unknown or N/A
c = Configure, m = make, M = make (after miniperl), t = make test-prep

   34956     Configuration (common) -DINST_TOP=$(INST_DRV)\Smoke\doesntexist
----------- ---------------------------------------------------------
O O         
O O         -Dusemymalloc
O O         -Duselargefiles
O O         -Duselargefiles -Dusemymalloc
O O         -Duseithreads -Uuseimpsys
O O         -Duseithreads -Uuseimpsys -Dusemymalloc
O O         -Duseithreads -Uuseimpsys -Duselargefiles
O O         -Duseithreads -Uuseimpsys -Duselargefiles -Dusemymalloc
O O         -Duseithreads
O F         -Duseithreads -Duselargefiles
| +--------- -DDEBUGGING
+----------- no debugging


Locally applied patches:
    DEVEL
    SMOKE34956

Failures: (common-args) -DINST_TOP=$(INST_DRV)\Smoke\doesntexist
[default] -DDEBUGGING -Duseithreads -Duselargefiles
../ext/PerlIO/t/ioleaks.t...................................FAILED
../lib/Attribute/Handlers/t/linerep.t.......................FAILED
../lib/ExtUtils/t/Embed.t...................................FAILED
    1, 9

Compiler messages(gcc):
perlhost.h: In function `CPerlHost* IPerlMem2Host(IPerlMem*)':
perlhost.h:247: warning: invalid access to non-static data member `CPerlHost::m_hostperlMem' of NULL object
perlhost.h:247: warning: (perhaps the `offsetof' macro was used incorrectly)
perlhost.h: In function `CPerlHost* IPerlMemShared2Host(IPerlMem*)':
perlhost.h:252: warning: invalid access to non-static data member `CPerlHost::m_hostperlMemShared' of NULL object
perlhost.h:252: warning: (perhaps the `offsetof' macro was used incorrectly)
perlhost.h: In function `CPerlHost* IPerlMemParse2Host(IPerlMem*)':
perlhost.h:257: warning: invalid access to non-static data member `CPerlHost::m_hostperlMemParse' of NULL object
perlhost.h:257: warning: (perhaps the `offsetof' macro was used incorrectly)
perlhost.h: In function `CPerlHost* IPerlEnv2Host(IPerlEnv*)':
perlhost.h:262: warning: invalid access to non-static data member `CPerlHost::m_hostperlEnv' of NULL object
perlhost.h:262: warning: (perhaps the `offsetof' macro was used incorrectly)
perlhost.h: In function `CPerlHost* IPerlStdIO2Host(IPerlStdIO*)':
perlhost.h:267: warning: invalid access to non-static data member `CPerlHost::m_hostperlStdIO' of NULL object
perlhost.h:267: warning: (perhaps the `offsetof' macro was used incorrectly)
perlhost.h: In function `CPerlHost* IPerlLIO2Host(IPerlLIO*)':
perlhost.h:272: warning: invalid access to non-static data member `CPerlHost::m_hostperlLIO' of NULL object
perlhost.h:272: warning: (perhaps the `offsetof' macro was used incorrectly)
perlhost.h: In function `CPerlHost* IPerlDir2Host(IPerlDir*)':
perlhost.h:277: warning: invalid access to non-static data member `CPerlHost::m_hostperlDir' of NULL object
perlhost.h:277: warning: (perhaps the `offsetof' macro was used incorrectly)
perlhost.h: In function `CPerlHost* IPerlSock2Host(IPerlSock*)':
perlhost.h:282: warning: invalid access to non-static data member `CPerlHost::m_hostperlSock' of NULL object
perlhost.h:282: warning: (perhaps the `offsetof' macro was used incorrectly)
perlhost.h: In function `CPerlHost* IPerlProc2Host(IPerlProc*)':
perlhost.h:287: warning: invalid access to non-static data member `CPerlHost::m_hostperlProc' of NULL object
perlhost.h:287: warning: (perhaps the `offsetof' macro was used incorrectly)

</description>
    <dc:creator>Steve Hay</dc:creator>
    <dc:date>2008-12-01T05:05:00</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64531">
    <title>[patch&lt; at &gt;34955] Achive::Tar fix for VMS.</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64531</link>
    <description>Test 04_Resolved_Issues was failing on VMS because it was translating 
".." to "__".  Use vmspath() instead so that dots are escaped if needed.

Also filed as:

http://rt.cpan.org/Public/Bug/Display.html?id=41329

-John
wb8tyw&lt; at &gt;qsl.net
Personal Opinion Only
--- /rsync_root/perl/lib/Archive/Tar.pmWed Oct 15 08:50:32 2008
+++ lib/Archive/Tar.pmSun Nov 30 17:33:31 2008
&lt; at &gt;&lt; at &gt; -690,9 +690,9 &lt; at &gt;&lt; at &gt;
         }
 
         
-        ### '.' is the directory delimiter, of which the first one has to
-        ### be escaped/changed.
-        map tr/\./_/, &lt; at &gt;dirs if ON_VMS;        
+        ### '.' is the directory delimiter on VMS, of which the first one
+        ### has to be escaped/changed by vmspath
+        map $_ = VMS::Filespec::vmspath($_), &lt; at &gt;dirs if ON_VMS;        
 
         my ($cwd_vol,$cwd_dir,$cwd_file) 
                     = File::Spec-&gt;splitpath( $cwd );
</description>
    <dc:creator>John E. Malmberg</dc:creator>
    <dc:date>2008-12-01T00:04:54</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64521">
    <title>Smoke [5.11.0] 34953 FAIL(F) MSWin32 WinXP/.Net SP3 (x86/2 cpu)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64521</link>
    <description>Automated smoke report for 5.11.0 patch 34953
maldoror.bath.planit.group: Intel(R) Core(TM)2 CPU 6700 &lt; at &gt; 2.66GHz(~2660 MHz) (x86/2 cpu)
    on        MSWin32 - WinXP/.Net SP3
    using     bcc32 version 5.5.1
    smoketime 5 hours 33 minutes (average 16 minutes 41 seconds)

Summary: FAIL(F)

O = OK  F = Failure(s), extended report at the bottom
X = Failure(s) under TEST but not under harness
? = still running or test results not (yet) available
Build failures during:       - = unknown or N/A
c = Configure, m = make, M = make (after miniperl), t = make test-prep

   34953     Configuration (common) -DCCTYPE=BORLAND -DINST_TOP=$(INST_DRV)\Smoke\doesntexist
----------- ---------------------------------------------------------
O O         
O O         -Dusemymalloc
O O         -Duselargefiles
O O         -Duselargefiles -Dusemymalloc
O O         -Duseithreads -Uuseimpsys
O O         -Duseithreads -Uuseimpsys -Dusemymalloc
O O         -Duseithreads -Uuseimpsys -Duselargefiles
O O         -Duseithreads -Uuseimpsys -Duselargefiles -Dusemymalloc
O O         -Duseithreads
F F         -Duseithreads -Duselargefiles
| +--------- -DDEBUGGING
+----------- no debugging


Locally applied patches:
    DEVEL
    SMOKE34953

Failures: (common-args) -DCCTYPE=BORLAND -DINST_TOP=$(INST_DRV)\Smoke\doesntexist
[default] -Duseithreads -Duselargefiles
../ext/IO/t/io_sock.t.......................................FAILED
../ext/PerlIO/t/ioleaks.t...................................FAILED
../lib/Attribute/Handlers/t/linerep.t.......................FAILED

[default] -DDEBUGGING -Duseithreads -Duselargefiles
op/taint.t..................................................FAILED
    Bad plan.  You planned 271 tests but ran 0.
../ext/PerlIO/t/ioleaks.t...................................FAILED
../lib/Attribute/Handlers/t/linerep.t.......................FAILED

Compiler messages(bcc32):
Warning W8008 crc32.c 232: Condition is always true in function crc32
Warning W8066 crc32.c 242: Unreachable code in function crc32
Warning W8004 deflate.c 351: 'hash_head' is assigned a value that is never used in function deflateSetDictionary
Warning W8008 deflate.c 1278: Condition is always false in function fill_window
Warning W8066 deflate.c 1279: Unreachable code in function fill_window
Warning W8004 deflate.c 1669: 'bflush' is assigned a value that is never used in function deflate_slow

</description>
    <dc:creator>Steve Hay</dc:creator>
    <dc:date>2008-11-30T04:19:00</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64520">
    <title>Smoke [5.8.9] 34928 FAIL(F) MSWin32 WinXP/.Net SP3 (x86/2 cpu)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.perl.perl5.porters/64520</link>
    <description>Automated smoke report for 5.8.9 patch 34928
maldoror.bath.planit.group: Intel(R) Core(TM)2 CPU 6700 &lt; at &gt; 2.66GHz(~2660 MHz) (x86/2 cpu)
    on        MSWin32 - WinXP/.Net SP3
    using     bcc32 version 5.5.1
    smoketime 3 hours 41 minutes (average 11 minutes 4 seconds)

Summary: FAIL(F)

O = OK  F = Failure(s), extended report at the bottom
X = Failure(s) under TEST but not under harness
? = still running or test results not (yet) available
Build failures during:       - = unknown or N/A
c = Configure, m = make, M = make (after miniperl), t = make test-prep

   34928     Configuration (common) -DCCTYPE=BORLAND -DINST_TOP=$(INST_DRV)\Smoke\doesntexist
----------- ---------------------------------------------------------
O O         
O O         -Dusemymalloc
O O         -Duselargefiles
O O         -Duselargefiles -Dusemymalloc
O O         -Duseithreads -Uuseimpsys
O O         -Duseithreads -Uuseimpsys -Dusemymalloc
O O         -Duseithreads -Uuseimpsys -Duselargefiles
O O         -Duseithreads -Uuseimpsys -Duselargefiles -Dusemymalloc
O O         -Duseithreads
O F         -Duseithreads -Duselargefiles
| +--------- -DDEBUGGING
+----------- no debugging


Locally applied patches:
    MAINT34912
    SMOKE34928

Failures: (common-args) -DCCTYPE=BORLAND -DINST_TOP=$(INST_DRV)\Smoke\doesntexist
[default] -DDEBUGGING -Duseithreads -Duselargefiles
    op/taint.t..............................FAILED 1-263

</description>
    <dc:creator>Steve Hay</dc:creator>
    <dc:date>2008-11-29T22:43:00</dc:date>
  </item>
  <textinput about="http://search.gmane.org/?group=$group=gmane.comp.lang.perl.perl5.porters">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.lang.perl.perl5.porters</link>
  </textinput>
</rdf:RDF>
