The Locale::Script module provides access to the ISO
codes for identifying scripts, as defined in ISO 15924.
For example, Egyptian hieroglyphs are denoted by the two-letter
code 'eg', the three-letter code 'egy', and the numeric code 050.
You can either access the codes via the conversion routines
(described below), or with the two functions which return lists
of all script codes or all script names.
There are three different code sets you can use for identifying
scripts:
Numeric codes, such as 410 for Hiragana.
This code set is identified with the symbol LOCALE_CODE_NUMERIC.
All of the routines take an optional additional argument
which specifies the code set to use.
If not specified, it defaults to the two-letter codes.
This is partly for backwards compatibility (previous versions
of Locale modules only supported the alpha-2 codes), and
partly because they are the most widely used codes.
The alpha-2 and alpha-3 codes are not case-dependent,
so you can use 'BO', 'Bo', 'bO' or 'bo' for Tibetan.
When a code is returned by one of the functions in
this module, it will always be lower-case.
This function takes a script code and returns a string
which contains the name of the script identified.
If the code is not a valid script code, as defined by ISO 15924,
then undef will be returned:
This function takes a script name and returns the corresponding
script code, if such exists.
If the argument could not be identified as a script name,
then undef will be returned:
$code = script2code('Gothic', LOCALE_CODE_ALPHA_3);
# $code will now be 'gth'
This function takes a script code from one code set,
and returns the corresponding code from another code set.
$alpha2 = script_code2code('jwi',
LOCALE_CODE_ALPHA_3 => LOCALE_CODE_ALPHA_2);
# $alpha2 will now be 'jw' (Javanese)
If the code passed is not a valid script code in
the first code set, or if there isn't a code for the
corresponding script in the second code set,
then undef will be returned.
Returns a list of all script names for which there is a corresponding
script code in the specified code set.
The names are capitalised, and not returned in any particular order.
The following example illustrates use of the code2script() function.
The user is prompted for a script code, and then told the corresponding
script name:
$| = 1; # turn off buffering
print "Enter script code: ";
chop($code = <STDIN>);
$script = code2script($code, LOCALE_CODE_ALPHA_2);
if (defined $script)
{
print "$code = $script\n";
}
else
{
print "'$code' is not a valid script code!\n";
}
If there's need for it, a future version could have variants
for script names.
In the current implementation, all data is read in when the
module is loaded, and then held in memory.
A lazy implementation would be more memory friendly.