


charnames(3p)    Perl Programmers Reference Guide   charnames(3p)


NAME
       charnames - define character names for `\N{named}' string
       literal escape.

SYNOPSIS
         use charnames ':full';
         print "\N{GREEK SMALL LETTER SIGMA} is called sigma.\n";

         use charnames ':short';
         print "\N{greek:Sigma} is an upper-case sigma.\n";

         use charnames qw(cyrillic greek);
         print "\N{sigma} is Greek sigma, and \N{be} is Cyrillic b.\n";


DESCRIPTION
       Pragma `use charnames' supports arguments `:full',
       `:short' and script names.  If `:full' is present, for
       expansion of `\N{CHARNAME}}' string `CHARNAME' is first
       looked in the list of standard Unicode names of chars.  If
       `:short' is present, and `CHARNAME' has the form
       `SCRIPT:CNAME', then `CNAME' is looked up as a letter in
       script `SCRIPT'.  If pragma `use charnames' is used with
       script name arguments, then for `\N{CHARNAME}}' the name
       `CHARNAME' is looked up as a letter in the given scripts
       (in the specified order).

       For lookup of `CHARNAME' inside a given script `SCRIPT-
       NAME' this pragma looks for the names

         SCRIPTNAME CAPITAL LETTER CHARNAME
         SCRIPTNAME SMALL LETTER CHARNAME
         SCRIPTNAME LETTER CHARNAME

       in the table of standard Unicode names.  If `CHARNAME' is
       lowercase, then the `CAPITAL' variant is ignored, other-
       wise the `SMALL' variant is ignored.

CUSTOM TRANSLATORS
       The mechanism of translation of `\N{...}' escapes is gen-
       eral and not hardwired into charnames.pm.  A module can
       install custom translations (inside the scope which `use's
       the module) with the following magic incantation:

           use charnames ();           # for $charnames::hint_bits
           sub import {
               shift;
               $^H |= $charnames::hint_bits;
               $^H{charnames} = \&translator;
           }

       Here translator() is a subroutine which takes `CHARNAME'
       as an argument, and returns text to insert into the string
       instead of the `\N{CHARNAME}' escape.  Since the text to



2000-04-06                 perl v5.6.0                          1





charnames(3p)    Perl Programmers Reference Guide   charnames(3p)


       insert should be different in `bytes' mode and out of it,
       the function should check the current state of
       `bytes'-flag as in:

           use bytes ();                       # for $bytes::hint_bits
           sub translator {
               if ($^H & $bytes::hint_bits) {
                   return bytes_translator(@_);
               }
               else {
                   return utf8_translator(@_);
               }
           }


BUGS
       Since evaluation of the translation function happens in a
       middle of compilation (of a string literal), the transla-
       tion function should not do any `eval's or `require's.
       This restriction should be lifted in a future version of
       Perl.




































2000-04-06                 perl v5.6.0                          2


