📄 script.pm
字号:
## Locale::Script - ISO codes for script identification (ISO 15924)## $Id: Script.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $#package Locale::Script;use strict;require 5.002;require Exporter;use Carp;use Locale::Constants;#-----------------------------------------------------------------------# Public Global Variables#-----------------------------------------------------------------------use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);$VERSION = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/);@ISA = qw(Exporter);@EXPORT = qw(code2script script2code all_script_codes all_script_names script_code2code LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 LOCALE_CODE_NUMERIC);#-----------------------------------------------------------------------# Private Global Variables#-----------------------------------------------------------------------my $CODES = [];my $COUNTRIES = [];#=======================================================================## code2script ( CODE [, CODESET ] )##=======================================================================sub code2script{ my $code = shift; my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT; return undef unless defined $code; #------------------------------------------------------------------- # Make sure the code is in the right form before we use it # to look up the corresponding script. # We have to sprintf because the codes are given as 3-digits, # with leading 0's. Eg 070 for Egyptian demotic. #------------------------------------------------------------------- if ($codeset == LOCALE_CODE_NUMERIC) { return undef if ($code =~ /\D/); $code = sprintf("%.3d", $code); } else { $code = lc($code); } if (exists $CODES->[$codeset]->{$code}) { return $CODES->[$codeset]->{$code}; } else { #--------------------------------------------------------------- # no such script code! #--------------------------------------------------------------- return undef; }}#=======================================================================## script2code ( SCRIPT [, CODESET ] )##=======================================================================sub script2code{ my $script = shift; my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT; return undef unless defined $script; $script = lc($script); if (exists $COUNTRIES->[$codeset]->{$script}) { return $COUNTRIES->[$codeset]->{$script}; } else { #--------------------------------------------------------------- # no such script! #--------------------------------------------------------------- return undef; }}#=======================================================================## script_code2code ( CODE, IN-CODESET, OUT-CODESET )##=======================================================================sub script_code2code{ (@_ == 3) or croak "script_code2code() takes 3 arguments!"; my $code = shift; my $inset = shift; my $outset = shift; my $outcode; my $script; return undef if $inset == $outset; $script = code2script($code, $inset); return undef if not defined $script; $outcode = script2code($script, $outset); return $outcode;}#=======================================================================## all_script_codes()##=======================================================================sub all_script_codes{ my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT; return keys %{ $CODES->[$codeset] };}#=======================================================================## all_script_names()##=======================================================================sub all_script_names{ my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT; return values %{ $CODES->[$codeset] };}#=======================================================================## initialisation code - stuff the DATA into the ALPHA2 hash##======================================================================={ my ($alpha2, $alpha3, $numeric); my $script; local $_; while (<DATA>) { next unless /\S/; chop; ($alpha2, $alpha3, $numeric, $script) = split(/:/, $_, 4); $CODES->[LOCALE_CODE_ALPHA_2]->{$alpha2} = $script; $COUNTRIES->[LOCALE_CODE_ALPHA_2]->{"\L$script"} = $alpha2; if ($alpha3) { $CODES->[LOCALE_CODE_ALPHA_3]->{$alpha3} = $script; $COUNTRIES->[LOCALE_CODE_ALPHA_3]->{"\L$script"} = $alpha3; } if ($numeric) { $CODES->[LOCALE_CODE_NUMERIC]->{$numeric} = $script; $COUNTRIES->[LOCALE_CODE_NUMERIC]->{"\L$script"} = $numeric; } } close(DATA);}1;__DATA__am:ama:130:Aramaicar:ara:160:Arabicav:ave:151:Avestanbh:bhm:300:Brahmi (Ashoka)bi:bid:372:Buhidbn:ben:325:Bengalibo:bod:330:Tibetanbp:bpm:285:Bopomofobr:brl:570:Braillebt:btk:365:Batakbu:bug:367:Buginese (Makassar)by:bys:550:Blissymbolsca:cam:358:Chamch:chu:221:Old Church Slavonicci:cir:291:Cirthcm:cmn:402:Cypro-Minoanco:cop:205:Copticcp:cpr:403:Cypriote syllabarycy:cyr:220:Cyrillicds:dsr:250:Deserel (Mormon)dv:dvn:315:Devanagari (Nagari)ed:egd:070:Egyptian demoticeg:egy:050:Egyptian hieroglyphseh:egh:060:Egyptian hieraticel:ell:200:Greekeo:eos:210:Etruscan and Oscanet:eth:430:Ethiopicgl:glg:225:Glagoliticgm:gmu:310:Gurmukhigt:gth:206:Gothicgu:guj:320:Gujaratiha:han:500:Han ideographshe:heb:125:Hebrewhg:hgl:420:Hangulhm:hmo:450:Pahawh Hmongho:hoo:371:Hanunoohr:hrg:410:Hiraganahu:hun:176:Old Hungarian runichv:hvn:175:Kok Turki runichy:hye:230:Armenianiv:ivl:610:Indus Valleyja:jap:930:(alias for Han + Hiragana + Katakana)jl:jlg:445:Cherokee syllabaryjw:jwi:360:Javaneseka:kam:241:Georgian (Mxedruli)kh:khn:931:(alias for Hangul + Han)kk:kkn:411:Katakanakm:khm:354:Khmerkn:kan:345:Kannadakr:krn:357:Karenni (Kayah Li)ks:kst:305:Kharoshthikx:kax:240:Georgian (Xucuri)la:lat:217:Latinlf:laf:215:Latin (Fraktur variant)lg:lag:216:Latin (Gaelic variant)lo:lao:356:Laolp:lpc:335:Lepcha (Rong)md:mda:140:Mandaeanme:mer:100:Meroiticmh:may:090:Mayan hieroglyphsml:mlm:347:Malayalammn:mon:145:Mongolianmy:mya:350:Burmesena:naa:400:Linear Anb:nbb:401:Linear Bog:ogm:212:Oghamor:ory:327:Oriyaos:osm:260:Osmanyaph:phx:115:Phoenicianph:pah:150:Pahlavipl:pld:282:Pollard Phoneticpq:pqd:295:Klingon plQaDpr:prm:227:Old Permicps:pst:600:Phaistos Diskrn:rnr:211:Runic (Germanic)rr:rro:620:Rongo-rongosa:sar:110:South Arabiansi:sin:348:Sinhalasj:syj:137:Syriac (Jacobite variant)sl:slb:440:Unified Canadian Aboriginal Syllabicssn:syn:136:Syriac (Nestorian variant)sw:sww:281:Shavian (Shaw)sy:syr:135:Syriac (Estrangelo)ta:tam:346:Tamiltb:tbw:373:Tagbanwate:tel:340:Telugutf:tfn:120:Tifnaghtg:tag:370:Tagalogth:tha:352:Thaitn:tna:170:Thaanatw:twr:290:Tengwarva:vai:470:Vaivs:vsp:280:Visible Speechxa:xas:000:Cuneiform, Sumero-Akkadianxf:xfa:105:Cuneiform, Old Persianxk:xkn:412:(alias for Hiragana + Katakana)xu:xug:106:Cuneiform, Ugariticyi:yii:460:Yizx:zxx:997:Unwritten languagezy:zyy:998:Undetermined scriptzz:zzz:999:Uncoded script
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -