tests/auto/qtextstream/shift-jis.txt
author Eckhart Koeppen <eckhart.koppen@nokia.com>
Wed, 28 Apr 2010 13:15:16 +0300 (2010-04-28)
branchRCL_3
changeset 15 b25b6dc3ff8b
parent 1 ae9c8dab0e3e
permissions -rw-r--r--
2010-17 8b4fb6db9a24f58dafbd4734d9c4a87a72f9ad8f
Shift-JISƒeƒLƒXƒg‚𐳂µ‚­ˆµ‚¤
Å‹ß‚̍XV—š—ð
2005-03-26: uÅ‰‚Ɂv’†AXML“ú–{Œêƒvƒƒtƒ@ƒCƒ‹‘æ2”Å‚ÉŠî‚«AŽáŠ±’Ç‹LB 
2005-03-09: uÅ‰‚Ɂv’†A•¶Í‚ðŽáŠ±C³B 
2003-06-24: Shift-JIS‚ÌŠ¿Žš‚ðŠÜ‚Þƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼ 
2003-05-31: uÅ‰‚Ɂv’†AuƒVƒtƒgJISv‚È‚Ç‚Ì•\‹L‚ɂ‚¢‚āB 
2003-05-24: CP932d•¡’è‹`•¶Žš‚Ì•ÏŠ· 
2002-08-30: Perl 5.8.0 ‚ɂ‚¢‚āB 
2002-01-17: ’·‚¢•¶Žš—ñ‚ɑ΂·‚鐳‹K•\Œ»ŒŸõ 
2001-12-15: ShiftJIS::Collate ‚ª overrideCJK ƒpƒ‰ƒ[ƒ^‚ð”pŽ~‚µ‚½‚±‚Æ‚É”º‚¤ “ú–{Œê•¶Žš—ñ‚ð•À‚Ñ‘Ö‚¦‚é‚̏‘‚«Š·‚¦B 
Å‰‚É 
‚ ‚肪‚¿‚ȃGƒ‰[ 
ƒGƒ‰[‚âŠÔˆá‚¢‚ð–h‚®‘΍ô 
•¶Žš—ñƒŠƒeƒ‰ƒ‹‚̍ì‚è•û 
³‹K•\Œ»‚ƃ}ƒbƒ` 
ƒOƒ[ƒoƒ‹ƒ}ƒbƒ` 
ƒAƒ‹ƒtƒ@ƒxƒbƒg‚̑啶Žš‚Ə¬•¶Žš 
’·‚¢•¶Žš—ñ‚ɑ΂·‚鐳‹K•\Œ»ŒŸõ 
ŠOŽš‚Ì•ÏŠ· 
CP932d•¡’è‹`•¶Žš‚Ì•ÏŠ· 
•¶Žš”‚𐔂¦‚é 
•¶Žš’PˆÊ‚É•ªŠ„‚·‚é 
‚¢‚ë‚¢‚ë‚È•ªŠ„ 
“Á’è‚Ì’·‚³‚Ő؂肻‚낦‚é 
“ú–{Œê•¶Žš—ñ‚ð•À‚Ñ‘Ö‚¦‚é 
Shift-JIS‚ÌŠ¿Žš‚ðŠÜ‚Þƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼ 
Å‰‚É
“ú–{Œê‚Ì•¶ŽšƒR[ƒh‚É‚Í‚¢‚­‚‚©‚Ì‚à‚Ì‚ªŽg‚í‚ê‚Ä‚¢‚Ü‚·B‚ ‚é’ö“xˆê”Ê“I‚È‚à‚Ì‚È‚çA‚Ç‚ê‚ðŽg‚Á‚Ä‚à‚æ‚¢‚Å‚µ‚傤i‚Ç‚Ì•¶ŽšƒR[ƒh‚Å•„†‰»‚³‚ê‚Ä‚¢‚é‚©‚̏î•ñ‚ªŽ¸‚í‚ꂳ‚¦‚µ‚È‚¯‚ê‚΁jB
—Ⴆ‚΁A“ú–{Œê”ÅWindows‚ł́Aƒƒ‚’ ‚Å‚àDOS‘‹‚Å‚àShift-JIS‚ªŽg‚í‚ê‚Ä‚¢‚Ü‚·B‚±‚¤‚¢‚¤ê‡Aˆ—‚Ì“r’†‚Å‚í‚´‚í‚´EUC-JP‚âUTF-8‚É•ÏŠ·‚·‚é‚Æ‚µ‚½‚ç–Ê“|‚Å‚·BƒfƒoƒbƒO‚Ì‚Æ‚«Au‚±‚Ì’iŠK‚Å‚Í‚±‚̕ϐ”‚ɂ͉½‚ª“ü‚Á‚Ä‚¢‚é‚Ì‚©vo—Í‚µ‚Ä“_ŒŸ‚·‚é‚Ì‚Í‚æ‚­s‚í‚ê‚Ü‚·‚ªA‚±‚Ì‚Æ‚«EUC-JP‚Æ‚µ‚ÄŽû‚ß‚ç‚ê‚Ä‚¢‚½‚çAì‹Æ‚ÍŽèŠÔ‚Ç‚é‚Å‚µ‚傤B“ü—Í‚ào—Í‚àShift-JIS‚ōs‚¤‚‚à‚è‚È‚çAˆ—‚Ì‘S‘Ì‚ÅShift-JIS‚̂܂܈µ‚¦‚½‚ç‚«‚Á‚Æ•Ö—˜‚Å‚µ‚傤B
’F "ƒVƒtƒgJIS", "Shift_JIS", "Shift-JIS" ‚È‚Ç‚Ì•\‹L‚̈Ⴂ‚ɂ‚¢‚Ä‚Í‚æ‚­‚í‚©‚Á‚Ä‚¢‚Ü‚¹‚ñB¡‚Ì‚Æ‚±‚땪‚©‚Á‚Ä‚¢‚邱‚Ƃ́F
JIS X 0208:1997‚Ì•‘®‘1iƒVƒtƒg•„†‰»•\Œ»j‚ɂ́AuŽQlv‚Æ‚µ‚āu‚±‚Ì•„†‰»•\Œ»‚͒ʏígƒVƒtƒgJISƒR[ƒhh‚ƌĂ΂ê‚Ä‚¢‚év‚Ì‹Lq‚ª‚ ‚è‚Ü‚·B 
IANA ‚Ì CHARACTER SETS ‚ɂ́AShift_JIS ‚Æ Windows-31J ‚Æ‚ª•Ê‚É“o˜^‚³‚ê‚Ä‚¢‚Ü‚·B‚Ü‚½AShift_JIS‚ɂ‚¢‚āAuCCSi•„†‰»•¶ŽšW‡j‚ÍJIS X0201:1997‚ÆJIS X0208:1997‚Å‚ ‚èAŠ®‘S‚È’è‹`‚ÍJIS X 0208:1997‚Ì•‘®‘1‚ÉŽ¦‚³‚ê‚Ä‚¢‚éBv‚Æ‹L‚µ‚Ä‚¢‚Ü‚·B 
W3C ‚Ì XML Japanese Profile ‚ɂ́AShift-JIS‚ÉUnicode‚Ö‚Ì•ÏŠ·•\‚ª•¡”‚ ‚éŽ|‚Ì‹LÚ‚ª‚ ‚è‚Ü‚·BXML Japanese Profile (Second Edition)‚ł́AUnicode Consortium‚ÅŒöŠJ‚³‚ê‚Ä‚¢‚éMicrosoft CP932‚Ì•ÏŠ·•\‚É‚æ‚écharset‚Ì–¼Ì "x-sjis-cp932" ‚ð "Windows-31J" ‚ɕύX‚µ‚Ä‚¢‚Ü‚·B 
MicrosoftŽÐ‚Ì Global Dev ‚ł́ACodepage 932 ‚ð "Japanese Shift-JIS" ‚Æ’‹L‚µ‚Ä‚¢‚Ü‚·B 
‚µ‚©‚µAShift-JIS‚É‚Í‚ ‚éŽí‚Ì•È‚ª‚ ‚Á‚āA‚¿‚å‚Á‚Æ‚µ‚½‚±‚Æ‚ªƒoƒO‚âƒGƒ‰[‚╶Žš‰»‚¯‚ÌŒ´ˆö‚Æ‚È‚è‚Ü‚·B‚È‚ñ‚Æ‚©‚È‚ç‚È‚¢‚à‚Ì‚Å‚µ‚傤‚©B
Perl‚͐§Œä•¶Žš‚âƒiƒ‹•¶Žš‚ðŠÜ‚ÞƒoƒCƒiƒŠƒf[ƒ^‚Å‚·‚琳‚µ‚­ˆ—‚Å‚«‚é‚悤‚ɐ݌v‚³‚ê‚Ä‚¢‚é‚̂ŁAƒXƒNƒŠƒvƒg‚âƒeƒLƒXƒg‚ðShift-JIS‚ŏ‘‚¢‚½‚­‚ç‚¢‚Å–â‘è‚ɂȂ邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB
‚µ‚©‚µAperl‚ªƒXƒNƒŠƒvƒg‚ð‰ðŽß‚·‚é‚Æ‚«‚́i’ʏíjƒoƒCƒg’PˆÊ‚Å’²‚ׂé‚̂ŁAShift-JIS‚̂悤‚ȃ}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚ðŠÜ‚Þ•„†‚Í‚»‚Ì‚Ü‚Ü‚Å‚Í’¼Ú—‰ð‚Å‚«‚Ü‚¹‚ñB
‚½‚Æ‚¦‚΁AShift-JIS‚Å '‚ ' ‚Æ‚¢‚¤•¶Žš‚́A16i”‚Å82 A0‚Æ‚¢‚¤‚QƒoƒCƒg‚Å•\‚³‚ê‚Ü‚·B‚±‚ê‚ð "\x82\xA0" ‚Ə‘‚¢‚Ä‚àperl‚É‚Æ‚Á‚Ä‚Í“¯‚¶‚Å‚·B‚±‚ꂪ“ú–{‚́icountryj“ú–{Œê‚́ilanguagej•¶Žš‚Å‚ ‚é‚Æ‚©AShift-JIS‚ŏ‘‚©‚ê‚Ä‚¢‚éicharsetj‚Æ‚©‚¢‚¤î•ñ‚Í‚Ç‚±‚É‚àŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚¹‚ñB
‚»‚Ì‚½‚߁AShift-JIS‚ŏ‘‚«‚½‚¢‚Æ‚«‚ɂ́Aperl‚ÌŒë‰ð‚ðŽó‚¯‚È‚¢‚悤‚ɏ‘‚¢‚Ä‚â‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚»‚Ì”z—¶‚́AƒvƒƒOƒ‰ƒ}‚ª‚µ‚Ä‚â‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚±‚Ì•¶‘‚Ì‹Lq‚́A‚»‚̂悤‚ÈŽèŠÔ‚ð‚©‚¯‚Ä‚àAShift-JIS‚ð—p‚¢‚邱‚ƂɈӋ`‚ª‚ ‚é‚ƍl‚¦‚Ä‚¢‚él‚É‚ÍŽQl‚É‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
‚»‚ñ‚ÈŽèŠÔ‚ðŠ|‚¯‚½‚­‚È‚¢l‚́A 
Perl 5.8.xˆÈ~‚ðŽg‚¤B 
—˜“_Fperl5-porters@perl.org ‚ŃTƒ|[ƒg‚³‚ê‚Ä‚¢‚éB 
Œ‡“_F“Æ“Á‚̍l‚¦•û‚ª‚ ‚èA]—ˆ‚Ì“ú–{Œêˆ—‚Æ‚Í‘Š—e‚ê‚È‚¢‚Æ‚±‚낪‚ ‚éi‚à‚Á‚Æ‚àA‚»‚Ì‚¤‚¿Šµ‚ê‚Ä‹C‚É‚È‚ç‚È‚­‚È‚é‚©‚à‚µ‚ê‚È‚¢jB 
jperl‚ðŽg‚¤B 
—˜“_FShift-JIS ‚𕶎š‚Æ‚µ‚Ä’¼Úˆµ‚¤‚±‚Æ‚ª‚Å‚«‚éB 
Œ‡“_FŒ»ÝAˆÛŽ‚·‚él‚ª‚¢‚È‚¢B 
•¶ŽšƒR[ƒh‚ðUTF-8‚©EUC-JP‚É•ÏŠ·‚µ‚Ä‚©‚珈—‚·‚éB 
—˜“_FPerl 5.8.xˆÈ~‚Å‚È‚­‚Ä‚à“®ì‚·‚é•ÏŠ·—p‚̃‚ƒWƒ…[ƒ‹(.pm)‚⃉ƒCƒuƒ‰ƒŠ(.pl)‚ª‚¢‚ë‚¢‚ë“üŽè‰Â”\B 
Œ‡“_FShift-JIS‚قLj«‚­‚È‚¢‚É‚µ‚Ä‚àAƒ}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚ðƒVƒ“ƒOƒ‹ƒoƒCƒg•¶Žš‚Æ‹æ•Ê‚¹‚¸A‚Æ‚à‚ɈꕶŽš‚Æ‚µ‚ďˆ—‚·‚é‚Ì‚Í–Ê“|‚Å‚ ‚éB 
 ‚Æ‚¢‚¤‘Ώˆ‚ð‚Æ‚Á‚½‚Ù‚¤‚ª‚æ‚¢‚Å‚µ‚傤B‚±‚ê‚ç‚̃vƒƒOƒ‰ƒ€‚Í—L–¼‚Ȃ̂ŁA’T‚¹‚΂·‚®Œ©‚‚©‚é‚Å‚µ‚傤‚©‚çA“üŽèæ‚Í‚±‚±‚É‚ÍŽ¦‚µ‚Ü‚¹‚ñB
‚È‚¨A‚±‚Ì•¶‘‚ɏ‘‚©‚ê‚Ä‚¢‚鎖‚ªAÅ‚àŠ©‚ß‚ç‚ê‚È‚¢•û–@‚Ȃ̂ŁA‚±‚±‚©‚çæ‚́A‚»‚̂‚à‚è‚Å‚¨“ǂ݉º‚³‚¢B‚±‚Ì•û–@‚ɂ‚¢‚ĉ½‚©‹^–₪¶‚¶‚½‚Æ‚µ‚Ä‚àA‚»‚ê‚ɂ‚¢‚Ä‘¼‚Ì‚Æ‚±‚ë‚ÅŽ¿–â‚·‚é‚ƁA‰½‚Å‚»‚ñ‚È‚â‚è•û‚ð‚µ‚Ä‚¢‚é‚Ì‚©‚ƁA‚«‚Á‚Æ”ñ“‚ê‚é‚Å‚µ‚傤B‚©‚Æ‚¢‚Á‚āAŽ„‚É‚àu‚©‚È‚¢‚ʼnº‚³‚¢B
Shift-JIS‚ðŽg‚Á‚½‚Æ‚«‚É‚ ‚肪‚¿‚ȁiHjƒGƒ‰[
Shift-JIS‚ɂ́A‘æ‚QƒoƒCƒg‚ª [@-~]iASCII 10i”‚Å64-126j‚͈̔͂ɓü‚é‚à‚Ì‚ª‚ ‚è‚Ü‚·B‚±‚ê‚ç‚ÌASCII•¶Žš‚́Aperl‚É‚Æ‚Á‚Ä“Á•Ê‚ȈӖ¡‚ð‚à‚‚±‚Æ‚ª‚ ‚邽‚߁A‚µ‚΂µ‚΃Gƒ‰[‚ÌŒ´ˆö‚Æ‚È‚è‚Ü‚·BShift-JIS‚ł́A‚QƒoƒCƒg•¶Žš‚Ì‘æ‚QƒoƒCƒg‚́A[\x40-\x7E\x80-\xFC])‚͈̔͂ɂ ‚邽‚߁AŽÀ‚É188•ª‚Ì63A–ñ‚R•ª‚Ì‚P‚Ì•¶Žš‚ª‰½‚ç‚©‚Ì–â‘è‚ð‹N‚±‚µ“¾‚é‚Æ‚¢‚¦‚Ü‚·B
ŽŸ‚ɁAShift-JIS‚ðŽg‚Á‚½‚Æ‚«‚É‹N‚±‚肪‚¿‚ȃGƒ‰[‚Æ‚»‚ÌŒ´ˆö‚ðŽ¦‚µ‚Ü‚·BƒGƒ‰[ƒƒbƒZ[ƒW‚Íperl‚̈Ⴂiƒo[ƒWƒ‡ƒ“‚â‚ǂ̃vƒ‰ƒbƒgƒtƒH[ƒ€—p‚Ì‚à‚Ì‚Å‚ ‚é‚©“™j‚É‚æ‚葽­‚̈Ⴂ‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
ƒGƒ‰[‚É‚È‚ç‚È‚­‚Ä‚àA•¶Žš‰»‚¯‚µ‚½‚èAŠú‘Ò‚µ‚½‚悤‚È“®ì‚ð‚µ‚È‚©‚Á‚½‚è‚ŁA‚¤‚Ü‚­‚¢‚©‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B‚±‚̏ꍇAƒGƒ‰[‚ªo‚È‚¢•ªAŒ´ˆö‚ðŽ©•ª‚Å’T‚³‚È‚¯‚ê‚΂Ȃç‚È‚­‚Ȃ邽‚߃oƒOŽæ‚è‚Í‚µ‚΂µ‚΍¢“ï‚Å‚·B
‚±‚±‚ł̓Gƒ‰[‚ɑ΂·‚é‘΍ô‚Í’ñŽ¦‚µ‚Ü‚¹‚ñB‘΍ô‚Í‚ ‚Ƃł܂Ƃ߂ď‘‚«‚Ü‚·B
‚È‚¨A‚±‚±‚É‚Í•¶ŽšƒR[ƒh‚ðEUC-JP‚É‚µ‚Ä‚à‹N‚±‚é‚悤‚È–â‘è‚âƒGƒ‰[‚ÍŽ¦‚µ‚Ü‚¹‚ñBŠî–{“I‚ɁAEUC-JP‚È‚ç‹N‚«‚È‚¢‚ªAShift-JIS‚Ì‚Æ‚«‚É‚Í‹N‚±‚é‚悤‚ÈŽ–•¿‚ÉŒÀ‚è‚Ü‚·B
ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Pj 
—Ⴆ‚΁A"•\Ž¦" ‚Æ‚© "–\—Í" ‚Æ‚©‚¢‚¤ƒŠƒeƒ‰ƒ‹‚ª•¶Žš‰»‚¯‚ð‹N‚±‚µ‚Ü‚·B‚±‚ê‚ç‚Í "•Ž¦" ‚Æ‚© "–—Í" ‚É‚È‚è‚Ü‚·B‚±‚ê‚́A"•\" ‚â "–\"‚Ì•¶Žš‚Ì‘æ‚QƒoƒCƒg‚ª \ ‚Å‚ ‚邽‚߁Aƒ_ƒuƒ‹ƒNƒI[ƒg•¶Žš‚Ì’†‚Å‚ÍŽŸ‚Ì•¶Žš‚̃GƒXƒP[ƒv‚ð‚·‚é‚±‚Æ‚É‚È‚é‚̂ŁA•\Ž¦  0x955C8EA6 ‚Å‚ ‚Á‚Ä‚àAƒNƒI[ƒg‚ÌŒ‹‰Ê‚Í "•\Ž¦"  0x958EA6 ‚Æ‚È‚é‚©‚ç‚Å‚·B'•\Ž¦' ‚Æ‚·‚ê‚Ε¶Žš‰»‚¯‚Í‹N‚±‚è‚Ü‚¹‚ñ‚ªAƒVƒ“ƒOƒ‹ƒNƒI[ƒg‚Å‚à–h‚°‚È‚¢•¶Žš‰»‚¯‚âƒGƒ‰[‚ª‚ ‚è‚Ü‚·iŽŸ—ájB 
ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Qj 
—Ⴆ‚΁A"ƒ~ƒ\\500" ‚Æ‚¢‚¤ƒŠƒeƒ‰ƒ‹‚ł́A\ ‚ª’E—Ž‚µ‚Ä‚µ‚Ü‚¢‚Ü‚·B‚±‚ê‚́A'ƒ~ƒ\\500' ‚â q(ƒ~ƒ\\500) ‚È‚Ç‚Æ‚µ‚Ä‚à–h‚®‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB‚»‚ê‚Í \\ ‚Æ‚¢‚¤˜A‘±‚ª‚ ‚é‚Æ \ ‚PŒÂ‚É‚È‚Á‚Ä‚µ‚Ü‚¤‚Æ‚¢‚¤‹K‘¥‚ª‚ ‚é‚©‚ç‚Å‚·B 
ƒNƒI[ƒg‚âƒNƒI[ƒg•—‰‰ŽZŽq‚Ì’†‚ł́A•¶Žš—ñ‚ɃNƒI[ƒg‚Æ“¯‚¶•¶Žš‚ðŠÜ‚ß‚ç‚ê‚é‚悤‚ɁA\ ‚É‚æ‚éƒGƒXƒP[ƒv‚ð•t‚¯‚ê‚΃NƒI[ƒg‚̏I’[•¶Žš‚Å‚Í‚È‚­A•¶Žš—ñ‚̈ꕔ‚Æ‚Ý‚È‚µ‚Ü‚·B‚»‚Ì‚½‚߁A\\ ‚ª \ ‚Ì•¶Žš‚ð•\‚·ƒGƒXƒP[ƒv‚É‚È‚è‚Ü‚·B‚±‚ê‚̓NƒI[ƒg‚ÌŽn’[EI’[•¶Žš‚ð‰½‚É‚µ‚Ä‚à“¯‚¶‚±‚Æ‚Å‚·B
ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Rj 
—Ⴆ‚΁A"ŠÛ\net" ‚Æ‚¢‚¤ƒŠƒeƒ‰ƒ‹‚ª•¶Žš‰»‚¯‚ð‹N‚±‚µ‚Ü‚·B‚±‚ê‚Í "ŠÛ¥
et" ‚̂悤‚É“r’†‚ʼnüs‚³‚ê‚Ä‚µ‚Ü‚¢‚Ü‚·B‚±‚ê‚́A"\" ‚Ì‘æ‚QƒoƒCƒg‚ª \ ‚Å‚ ‚邽‚߁Aƒ_ƒuƒ‹ƒNƒI[ƒg•¶Žš‚Ì’†‚Å‚ÍŽŸ‚Ì 'n' ‚ƍ‡‚킹‚Ä\n‚Ì‚·‚È‚í‚¿‰üs•¶Žš‚ð•\‚·ƒƒ^•¶Žš‚Æ‚µ‚ĉðŽß‚³‚ê‚é‚©‚ç‚Å‚·B 
ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Sj 
—Ⴆ‚΁A"ˆø”@ARGV" ‚Æ‚¢‚¤ƒŠƒeƒ‰ƒ‹‚ª•¶Žš‰»‚¯‚ð‹N‚±‚µ‚Ü‚·B‚±‚ê‚́A"@"i‘SŠpƒXƒy[ƒXj‚Ì‘æ‚QƒoƒCƒg‚ª @ ‚Å‚ ‚邽‚߁Aƒ_ƒuƒ‹ƒNƒI[ƒg•¶Žš‚Ì’†‚Å‚ÍŽŸ‚Ì ARGV ‚ƍ‡‚킹‚Ä "@ARGV" ‚Æ‚¢‚¤”z—ñ‚Æ‚µ‚ĕϐ”“WŠJ‚ðs‚¤‚©‚ç‚Å‚·B@ARGV‚̂悤‚É•K‚¸’è‹`‚³‚ê‚é‚悤‚È”z—ñ‚È‚çA“WŠJ‚³‚ê‚Ü‚·‚ªA•Ê‚̏ꍇ‚ł̓Gƒ‰[‚É‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñi‚»‚ê‚ÍŽŸ€‚ðŽQÆjB 
In string, @dog now must be written as \@dog (Perl 5.6.0‚Ü‚Å) 
u•¶Žš—ñ‚Ì’†‚ł́A@dog‚͍¡‚Í\@dog‚Ə‘‚©‚È‚¯‚ê‚΂Ȃç‚È‚¢v 
‘O—á‚Å‚Ý‚½‚悤‚ɁA‘SŠpƒXƒy[ƒX "@"‚Ì‘æ‚QƒoƒCƒg‚Í @ ‚Å‚ ‚邽‚߁AŒã‚ë‚Ì•¶Žš‚ƍ‡‚킹‚Ä”z—ñ‚Å‚ ‚é‚©‚̂悤‚ɉðŽß‚µ‚悤‚Æ‚µ‚Ü‚·B"Œ¢@dog" ‚̂悤‚ȏꍇA@dog ‚Æ‚¢‚¤”z—ñ‚ª’è‹`‚³‚ê‚Ä‚¢‚ê‚΂»‚ê‚ð—p‚¢‚ĕϐ”“WŠJ‚µ‚Ü‚·‚ªA’è‹`‚³‚ê‚Ä‚¢‚È‚¢ê‡AƒGƒ‰[ƒƒbƒZ[ƒW‚ðo‚µ‚Ü‚·B 
``now must be written as''u¡‚Í‚±‚¤‘‚©‚È‚¯‚ê‚΂Ȃç‚È‚¢v‚Ƃ́APerl4‚Ü‚Å‚Í”z—ñ‚̕ϐ”“WŠJ‚͍s‚í‚È‚©‚Á‚½‚½‚߁A"hoge@foo.bar" ‚̂悤‚ȏ‘‚«•û‚ð‚·‚é‚±‚Æ‚ª‚Å‚«‚½‚Ì‚¾‚ªA¡ Perl‚Å‚Í @foo ‚ª“WŠJ‚³‚ê‚Ä‚µ‚Ü‚¤‚̂ŁA’ˆÓ‚ðŠ«‹N‚·‚邽‚߃Gƒ‰[‚ðo‚·‚悤‚É‚µ‚Ä‚¢‚é‚悤‚Å‚·i‚à‚µPerl‚ªÌ‚©‚ç”z—ñ‚Ì“WŠJ‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚½‚çAƒGƒ‰[‚ðo‚·‚±‚Æ‚È‚­A–Ù‚Á‚Ä“WŠJ‚·‚邾‚¯‚¾‚Á‚½‚©‚à‚µ‚ê‚Ü‚¹‚ñBŽŸ€‚àŽQÆjB
"Œ¢@\dog" ‚Æ‚·‚ê‚΂¢‚¢‚Æ‚¢‚¤ˆÓŒ©‚à‚ ‚è‚Ü‚·‚ªA\d ‚ªƒƒ^•¶Žš‚Æ‚µ‚Ä“Á•ÊˆÓ–¡‚ª‚È‚¢‚½‚ß‚É‚¤‚Ü‚­‚¢‚­‚Ì‚Å‚ ‚Á‚āiPerl 5.6ˆÈ~‚ł́AŒx Unrecognized escape \d passed through u”FŽ¯‚Å‚«‚È‚¢ƒGƒXƒP[ƒv \d ‚ª“n‚³‚ꂽv‚ðˆø‚«‹N‚±‚µ‚Ü‚·jA—Ⴆ‚Î "‰Ô@\flower" ‚Ì‚Æ‚«‚́A\f ‚ª‰üƒy[ƒW•¶Žš‚Æ‚µ‚ĉðŽß‚³‚êA•¶Žš‰»‚¯‚µ‚Ü‚·B
Possible unintended interpolation of @dog in string (Perl 5.6.1ˆÈ~) 
•¶Žš—ñ‚Ì’†‚ŁA@dog‚ª—\Šú‚¹‚¸‚É“WŠJ‚³‚ê‚é 
‘O€‚Æ“¯‚¶‚­A"Œ¢@dog" ‚Å‚·‚ªAPerl 5.6.1iActivePerl 626jˆÈ~‚ł́A’è‹`‚³‚ê‚Ä‚¢‚È‚¢”z—ñ‚Å‚à–Ù‚Á‚Ä“WŠJ‚µ‚Ü‚·B”z—ñ @dog ‚ª“WŠJ‚³‚ê‚é‚̂ŁA"Œ¢\x81" ‚Æ“¯‚¶‚É‚È‚è‚Ü‚·B 
‚±‚ê‚̓Gƒ‰[‚Å‚Í‚È‚­AŒx‚É‚È‚è‚Ü‚·B
Can't find string terminator '"' anywhere before EOF 
uI’[•¶Žš '"'‚ªƒtƒ@ƒCƒ‹‚̏I‚è EOF ‚Ü‚Å‚ÉŒ©‚‚©‚ç‚È‚©‚Á‚½v 
—Ⴆ‚΁A"‘Ήž•\" ‚̂悤‚ȃŠƒeƒ‰ƒ‹‚ł́A'•\' ‚Ì‘æ‚QƒoƒCƒg‚ª \ ‚Å‚ ‚邽‚߁A‚¤‚µ‚ë‚Ì " ‚ðƒGƒXƒP[ƒv‚µ‚Ä‚µ‚Ü‚¢‚Ü‚·B‚±‚Ì‚½‚ßperl‚́A‚»‚Ì " ‚̓NƒI[ƒg•¶Žš—ñ‚̏I’[•¶Žš‚Æ‚Í‚Ý‚È‚³‚¸‚ɁA•¶Žš—ñ‚ª‚³‚ç‚É‘±‚­‚ƍl‚¦‚Ä‚µ‚Ü‚¢‚Ü‚·B‚±‚êˆÈ~AƒXƒNƒŠƒvƒg‚Ì’†‚É " ‚Ì•¶Žš‚ª‘S‚­ŠÜ‚Ü‚ê‚È‚¯‚ê‚΁A‚±‚̂悤‚ɃGƒ‰[•ñ‚ð‚µ‚Ü‚·B 
qq{ "“ú–{Œê" }‚̂悤‚ȏꍇ‚É‚à’ˆÓ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB"–{" ‚Ì‘æ“ñƒoƒCƒg‚Í { ‚Ȃ̂ŁA‚±‚Ì‚Ü‚Ü‚Å‚Í { }‚̃lƒXƒg‚ª‚¸‚ê‚Ä‚µ‚Ü‚¢A“¯—l‚̃Gƒ‰[‚ª”­¶‚µ‚Ü‚·B
Bareword found where operator expected 
u—‡‚̌ꂪ‰‰ŽZŽq‚ª‚ ‚Á‚Ä‚Ù‚µ‚¢ˆÊ’u‚ÉŒ©‚‚©‚Á‚½v 
—Ⴆ‚΁Aprint "<img alt=\"‘Ήž•\\" height=115 width=150>"; ‚̂悤‚ȏꍇA\" ‚É‚æ‚éˆø—p•„‚̃GƒXƒP[ƒv‚́A•\ ‚Ì‘æ‚QƒoƒCƒg‚Ì\‚Ì‚½‚߁A\\ " ‚Æ‚¢‚¤‘g‚ݍ‡‚킹‚É‚È‚èAƒGƒXƒP[ƒv‚ª‘Å‚¿Á‚³‚ê‚Ä‚¢‚Ü‚·B‚»‚Ì‚½‚߁A‚±‚̃Šƒeƒ‰ƒ‹‚́Aperl‚©‚猩‚é‚ƁA"<img alt=\"‘Ήž•\\" ‚ŏI‚í‚Á‚Ä‚¢‚Ü‚·B‚»‚Ì‚½‚߁AƒŠƒeƒ‰ƒ‹‚ÌŒã‚ɁAheight ‚Æ‚¢‚¤u—‡‚ÌŒêviƒNƒI[ƒg‚ň͂܂ê‚Ä‚¢‚È‚¢•¶Žš—ñj‚ª‚ ‚é‚悤‚ɂ݂āA‚±‚±‚É‚Í—‡‚ÌŒê‚Å‚Í‚È‚­A‰‰ŽZŽq‚ª‚ ‚é‚ׂ«‚Å‚Í‚È‚¢‚©H‚Æperl‚͍l‚¦‚Ü‚·B 
Unrecognized character \x82 
u”FŽ¯‚³‚ê‚È‚¢•¶Žš \x82v 
‚±‚ê‚́A”ñASCII•¶Žš‚â‚»‚Ì‘¼‚Ì•¶Žš‚ðu—‡‚ÌŒêv‚É‚µ‚½‚Æ‚«‚ɏo‚郁ƒbƒZ[ƒW‚Å‚·B"‘Ήž•\" ‚̂悤‚ȃŠƒeƒ‰ƒ‹‚ª‚ ‚Á‚āA‚»‚Ì‚ ‚Æ‚É "‚È‚ñ‚Å‚à‚¢‚¢‚¯‚Ç" ‚̂悤‚ȃŠƒeƒ‰ƒ‹‚ª‚ ‚Á‚½‚Æ‚«A‘O—á‚Æ“¯‚¶——R‚©‚ç‹N‚±‚é‚à‚Ì‚Å‚·B 
‚Ü‚½Aq{ƒ}ƒbƒ`} ‚̂悤‚ȏꍇ‚É‚àA'ƒ}' ‚Ì‘æ“ñƒoƒCƒg‚ª } ‚Ȃ̂ŁA{ } ‚̃JƒbƒR‚Í‚»‚±‚ŏI‚í‚Á‚Ä‚µ‚Ü‚¢A“¯—l‚ȃGƒ‰[‚É‚È‚è‚Ü‚·B
ƒ}ƒbƒ`‚µ‚È‚¢‚Í‚¸‚Ȃ̂Ƀ}ƒbƒ`‚·‚éi‚Pj 
"ƒ„ƒJƒ“" =~ /ƒ|ƒbƒg/ ‚̓}ƒbƒ`‚µ‚Ü‚·B‚»‚ê‚́A'ƒ|' ‚Ì‘æ“ñƒoƒCƒg‚ª | ‚Ȃ̂ŁA/ƒ|ƒbƒg/ ‚Í /\x83|ƒbƒg/ ‚Æ‚Ý‚È‚³‚êA\x83 ‚¾‚¯ƒ}ƒbƒ`‚·‚ê‚΂悢‚©‚ç‚Å‚·B 
ƒ}ƒbƒ`‚µ‚È‚¢‚Í‚¸‚Ȃ̂Ƀ}ƒbƒ`‚·‚éi‚Qj 
"ŒZ’í" =~ /Z/ ‚̓}ƒbƒ`‚µ‚Ü‚·B‚»‚ê‚́A'ŒZ' ‚Ì‘æ“ñƒoƒCƒg‚ª 'Z' ‚¾‚©‚ç‚Å‚·B‘æ“ñƒoƒCƒg‚ªƒAƒ‹ƒtƒ@ƒxƒbƒg‚ɂȂ镶Žš‚É‚Í’ˆÓ‚ª•K—v‚Å‚·B 
ƒ}ƒbƒ`‚·‚é‚Í‚¸‚Ȃ̂Ƀ}ƒbƒ`‚µ‚È‚¢i‚Pj 
"‰^“]–Æ‹–" =~ /‰^“]/ ‚̓}ƒbƒ`‚µ‚Ü‚¹‚ñB‚»‚ê‚́A'‰^' ‚Ì‘æ“ñƒoƒCƒg‚ª '^'‚Ȃ̂ŁA/‰^“]/ ‚Í /\x89^“]/ ‚Æ‚Ý‚È‚³‚êA•¶Žš—ñ‚ÌŽn‚ß ^ ‚Ì‘O‚É \x89 ‚Í‚È‚¢‚©‚ç‚Å‚·B 
Search pattern not terminated 
uƒT[ƒ`ƒpƒ^[ƒ“‚ªI—¹‚µ‚È‚¢v 
‚±‚ê‚́A/•\/ ‚̂悤‚ɁA‘æ“ñƒoƒCƒg‚ª \ ‚Å‚ ‚镶Žš‚ŃT[ƒ`ƒpƒ^[ƒ“‚ðI‚í‚点‚悤‚Æ‚µ‚½‚Æ‚«‚É‹N‚±‚è‚Ü‚·Bƒ}ƒbƒ`‰‰ŽZŽq‚̏I’[•¶Žš / ‚ðƒGƒXƒP[ƒv‚µ‚Ä‚µ‚Ü‚¤‚̂ŁAƒT[ƒ`ƒpƒ^[ƒ“‚ª‚³‚ç‚ɐæ‚É‘±‚­‚悤‚ɉðŽß‚³‚ê‚Ü‚·B‚»‚̐æ‚É‚à‚¤ˆê“x/‚Í‚ ‚è‚Ü‚·‚©H 
‚ ‚Á‚½‚Æ‚±‚ë‚ŁA•Ê‚̃Gƒ‰[‚ª”­¶‚·‚é‚Å‚µ‚傤B
Substitution replacement not terminated 
u’uŠ·‘€ì‚Ì’uŠ·•¶Žš—ñ‚ªI—¹‚µ‚È‚¢v 
’uŠ·‰‰ŽZŽq‚Í s/PATTERN/REPLACEMENT/‚ÌŒ`Ž®‚ð‚Æ‚ç‚˂΂Ȃè‚Ü‚¹‚ñB‚µ‚©‚µ s/•\/— /; ‚̂悤‚ɁA‘æ“ñƒoƒCƒg‚ª \ ‚Å‚ ‚镶Žš‚ÅPATTERN•”•ª‚ðI‚í‚点‚悤‚Æ‚µ‚½‚Æ‚«‚É‚±‚̃Gƒ‰[‚ª‹N‚±‚è‚Ü‚·Bƒ}ƒbƒ`‰‰ŽZŽq‚̏I’[•¶Žš / ‚ðƒGƒXƒP[ƒv‚µ‚Ä‚µ‚Ü‚¤‚̂ŁAPATTERN‚ª‚³‚ç‚ɐæ‚É‘±‚­‚悤‚ɉðŽß‚³‚ê‚Ü‚·B‚»‚Ì‚½‚ßperl‚́APATTERN‚Í •\/—  ‚Ì•”•ª‚Å‚ ‚é‚ƍl‚¦A‚R”Ô–Ú‚Ì/‚̐æ‚ÉREPLACEMENT•”•ª‚ª‚ ‚é‚ɈႢ‚È‚¢‚ÆŽv‚¤‚Ì‚Å‚·‚ªA‚»‚̐æ‚É‚à‚¤ˆê“x/‚Í‚ ‚è‚Ü‚·‚©H 
‚ ‚Á‚½‚Æ‚±‚ë‚ŁA•Ê‚̃Gƒ‰[‚ª”­¶‚·‚é‚Å‚µ‚傤B
unmatched [ ] in regexp 
u³‹K•\Œ»‚Ƀ}ƒbƒ`‚µ‚È‚¢ [ ] ‚ª‚ ‚év 
—Ⴆ‚΁A/ƒv[ƒ‹/ ‚ł̓Gƒ‰[‚ª‹N‚±‚è‚Ü‚·B‚»‚ê‚Í '[' ‚Ì‘æ“ñƒoƒCƒg‚ª [ ‚Ȃ̂ŁA/ƒv[ƒ‹/ ‚Í /ƒv\x81[\x83\x8B/ ‚Æ‚Ý‚È‚³‚êAperl‚Í•¶ŽšƒNƒ‰ƒX‚ª‚ ‚é‚Ì‚Å‚Í‚È‚¢‚©‚ÆŽv‚¢‚Ü‚·B‚µ‚©‚µ•¶ŽšƒNƒ‰ƒX‚̏I—¹‚ðŽ¦‚· ] ‚ªŒ©‚‚©‚ç‚È‚¢‚̂ŃGƒ‰[‚É‚È‚è‚Ü‚·B 
ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Tj 
—Ⴆ‚΁Alc('ƒAƒCƒEƒGƒI')‚́A'ƒaƒcƒeƒgƒi'‚ð•Ô‚µ‚Ü‚·BShift-JIS‚Ì‚QƒoƒCƒg•¶Žš‚Ì’†‚ɂ́A‘æ‚QƒoƒCƒg‚ªASCII‚ʼnpŽš‚É“–‚½‚é‚à‚Ì‚ª‚ ‚è‚Ü‚·BÚ‚µ‚­‚̓Aƒ‹ƒtƒ@ƒxƒbƒg‚̑啶Žš‚Ə¬•¶Žš‚ð‚²——‰º‚³‚¢B 
ƒGƒ‰[‚âŠÔˆá‚¢‚ð–h‚®‘΍ô
ˆÈã‚̂悤‚ȃGƒ‰[‚ð–h‚®‚É‚Í‚³‚Ü‚´‚Ü‚È•û–@‚ªl‚¦‚ç‚ê‚Ü‚·B—Ⴆ‚΁A"•\\Ž¦" ‚Ə‘‚¯‚΂¢‚¢‚È‚Ç‚Æ‚¢‚¤’ñˆÄ‚ª‚ ‚è‚Ü‚·B‚à‚¿‚ë‚ñ‚»‚ê‚Å‚à‚©‚Ü‚¢‚Ü‚¹‚ñB‚µ‚©‚µ‚»‚Ì‚½‚ß‚É‚Í‚Ç‚Ì•¶Žš‚ÌŒã‚É \ ‚ð“ü‚ê‚ê‚΂¢‚¢‚©‚ð’m‚é•K—v‚ª‚ ‚è‚Ü‚·B‚»‚ê‚Í•¶ŽšƒR[ƒh•\‚ðŒ©‚ê‚Έꔭ‚Å–¾‚ç‚©‚Å‚·B
c‚È‚Ç‚Æ‚¢‚¤–Ê“|‚È‚±‚Æ‚ª‹ê‚É‚È‚ç‚È‚¢lA•¶ŽšƒR[ƒh•\‚È‚ñ‚©i­‚È‚­‚Æ‚à–â‘è‚É‚È‚é‚悤‚È•¶Žš‚­‚ç‚¢‚́jˆÃ‹L‚µ‚Ä‚µ‚Ü‚¦‚΂¢‚¢‚Æ‚¢‚¤‚悤‚Ȑl‚É‚Æ‚Á‚ẮAŠm‚©‚É‚»‚ê‚Å‰ðŒˆ‚É‚È‚é‚ÆŽv‚¢‚Ü‚·B‚µ‚©‚µA‚»‚̂悤‚Ȑl‚ɂ́A‚±‚ñ‚ȃy[ƒW‚ðŒ©‚É‚­‚é•K—v‚àƒqƒ}‚à‚È‚¢‚Å‚µ‚傤B
‚»‚±‚ŁA‚±‚̂悤‚ȃy[ƒW‚ð‚í‚´‚í‚´Œ©‚É‚­‚é‚悤‚Ȑl‚́A•¶ŽšƒR[ƒh•\‚ð‚¢‚¿‚¢‚¿’²‚ׂ½‚­‚È‚¢‚ЂƂ¾‚Ɖ¼’肵‚Ü‚·B•Ê‚É‚»‚¤‚¾‚©‚ç‚Æ‚¢‚Á‚Ä”ñ“‚ê‚邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB‚µ‚©‚µAŽèŠÔ‚ðÉ‚µ‚Þ‚ ‚Ü‚èŠÔˆá‚Á‚½ƒvƒƒOƒ‰ƒ€‚𕽋C‚ōì‚Á‚Ä‚¢‚ẮAŠç‚ɃNƒŠ[ƒ€ƒpƒC‚ð‚Ԃ‚¯‚ç‚ê‚Ä‚àŽd•û‚ ‚è‚Ü‚¹‚ñB
•¶Žš—ñƒŠƒeƒ‰ƒ‹‚̍ì‚è•û
‚æ‚­’m‚Á‚Ä‚¨‚©‚˂΂Ȃç‚È‚¢‚±‚Ƃ́A\ ‚Æ‚¢‚¤ƒGƒXƒP[ƒv—p‚Ì•¶Žš‚́A•Ï”“WŠJ‚⃁ƒ^•¶Žš‚̉ðŽß‚æ‚肸‚Á‚Æ‘O‚Ì’iŠK‚Å‚³‚Ü‚´‚܂ȉe‹¿‚ð‹y‚Ú‚·‚Æ‚¢‚¤‚±‚Æ‚Å‚·B‚»‚Ì‚½‚߁A‚Ç‚¤‚µ‚½‚çƒf[ƒ^‚ðŠmŽÀ‚ɕϐ”‚Ì’†‚ÉŽû‚ß‚ç‚ê‚é‚©‚ðl‚¦‚é•K—v‚ª‚ ‚è‚Ü‚·B•Ï”‚Ì“à•”‚ÉŽû‚ß‚Ä‚µ‚Ü‚¦‚΁APerl‚ªƒf[ƒ^‚ð“KØ‚ÉŠÇ—‚µ‚Ä‚­‚ê‚Ü‚·B‚æ‚­’m‚ç‚ê‚Ä‚¢‚é $str = "•\Ž¦" ‚Ì•¶Žš‰»‚¯‚àA•Ï”$str‚É‘ã“ü‚·‚éˆÈ‘OAƒ_ƒuƒ‹ƒNƒH[ƒg‚ň͂ñ‚¾Žž“_‚Å‚·‚Å‚É•¶Žš‰»‚¯‚µ‚Ä‚¢‚é‚ƍl‚¦‚é‚ׂ«‚Å‚·B‚·‚Å‚É•¶Žš‰»‚¯‚µ‚½ƒf[ƒ^‚ð‘ã“ü‚µ‚āAD‚¢Œ‹‰Ê‚ª“¾‚ç‚ê‚é‚Í‚¸‚ª‚ ‚è‚Ü‚¹‚ñB
ƒqƒAƒhƒLƒ…ƒƒ“ƒg‚͈À‘S«‚̍‚‚¢‰ðŒˆ–@‚Å‚·B‚½‚¾‚µAI’[•¶Žš—ñ‚ðƒVƒ“ƒOƒ‹ƒNƒH[ƒg‚ň͂ñ‚Å‚â‚ç‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñBƒ_ƒuƒ‹ƒNƒH[ƒg‚ň͂ñ‚¾‚èAƒNƒH[ƒg‚ð•t‚¯‚È‚©‚Á‚½‚è‚ł́A—\Šú‚¹‚ʕϐ”“WŠJ‚⃁ƒ^•¶Žš‚̉ðŽß‚ð–h‚®‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB
ƒVƒ“ƒOƒ‹ƒNƒH[ƒg‚ŏI’[•¶Žš—ñ‚ðˆÍ‚ñ‚¾ƒqƒAƒhƒLƒ…ƒƒ“ƒg‚ł́A•Ï”“WŠJ‚⃁ƒ^•¶Žš‚̉ðŽß‚͉½‚à‹N‚±‚è‚Ü‚¹‚ñB‚½‚¾AI’[•¶Žš—ñi‚±‚̏ꍇ‚Í "\nEOF\n"j‚ð’T‚·‚±‚Æ‚¾‚¯‚ðs‚¢‚Ü‚·BƒqƒAƒhƒLƒ…ƒƒ“ƒg‚ðŽg‚¤‚Æ•¶Žš—ñ‚ɉüs•¶Žš‚ª‚‚«‚Ü‚·‚ªAchomp‚ŏœ‚­‚Æ‚¢‚¢‚Å‚µ‚傤B
ŽŸ‚Ì—á‚Í $str = '‚±‚±‚ɃeƒLƒXƒg‚ð‘‚­' ‚Æ“¯‚¶‚悤‚É“­‚«‚Ü‚·‚ªA•¶Žš—ñ‚Ì“à—e‚É‚æ‚Á‚Ä–â‘肪‹N‚±‚è‚Ü‚¹‚ñB‘‚¢‚½‚Æ‚¨‚è‚ɃŠƒeƒ‰ƒ‹‚ð‘ã“ü‚Å‚«‚é‚ÆŠú‘Ò‚Å‚«‚Ü‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
chomp($str = << 'EOF');
‚±‚±‚ɃeƒLƒXƒg‚ð‘‚­
EOF

$src = << 'EOF';
  $path = "C:\\path\\file";
  open FH, $path;
EOF

‘½‚­‚Ì•¶Žš—ñ‚ðˆê“x‚ɍì‚肽‚¯‚ê‚΁Asplit‚Å•ªŠ„‚·‚é‚Æ—eˆÕ‚ɍì‚ê‚Ü‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
($name, $career, $age, $memo) = split "\n", << 'EOF';
“c’†ˆê˜Y
ƒvƒƒOƒ‰ƒ}
ŽO\ŒÜ
‘å•Ÿ‚ªD•¨‚Å‚ ‚éB  Žð‚Í‚ ‚Ü‚è“Û‚Ü‚È‚¢B
EOF

‚à‚¤­‚µŠÈŒ‰‚ɏ‘‚«‚½‚¯‚ê‚΁A‹ó”’•¶ŽšA\i‚QƒoƒCƒg•¶Žš‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚é‚͍̂\‚í‚È‚¢jA‚¨‚æ‚уJƒbƒR‚ðŠÜ‚Ü‚È‚¢‚Æ‚¢‚¤ðŒ‚ŁAqw() ‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B—Ⴆ‚΁A@str = qw(•\Ž¦ ‘Ήž•\ );‚̂悤‚É‹ó”’‚ð“ü‚ê‚ăJƒbƒR‚̃GƒXƒP[ƒv‚ð–h‚¬‚Ü‚·B@str = qw(•\Ž¦ ‘Ήž•\);‚̂悤‚É‹ó”’‚ð“ü‚ê‚È‚¢‚ƃGƒ‰[‚ÌŒ³‚Å‚·B
‚P‚‚̕¶Žš—ñ‚ðì‚鎞‚Å‚àA¶•Ó‚ðŠÛƒJƒbƒR‚ň͂ñ‚ŃŠƒXƒgƒRƒ“ƒeƒLƒXƒg‚ðŽ¦‚·‚©A‰E•Ó‚ðƒXƒ‰ƒCƒX‚É‚·‚é‚©‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚±‚ê‚́AiŒ»ó‚ł́jqw// ‚Í split(' ', q//) ‚Ì—ª‹L‚Æ‚µ‚ÄŽÀ‘•‚µ‚Ä‚¢‚é‚©‚ç‚Å‚·B‚È‚¨APerl 5.6‚ł̓ŠƒXƒg‚Æ“™‰¿‚É‚È‚Á‚Ä‚¢‚é‚悤‚Å‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
($str) =  qw(•SŽO\ );
 $str  = (qw/•SŽO\ /)[0];
 $str  =  qw/•SŽO\ /; # Perl 5.6

³‹K•\Œ»‚ƃ}ƒbƒ`
³‹K•\Œ»‚̃ƒ^•¶Žš‚Í‘½‚¢‚̂ŁA³‹K•\Œ»‚Ì’†‚ÉShift-JIS‚Ì•¶Žš—ñ‚ð–„‚ß‚±‚Þ‚Ì‚Í“¾ô‚Å‚Í‚ ‚è‚Ü‚¹‚ñB—Ⴆ‚΁A/\Q‘Ήž•\/ ‚ł̓Gƒ‰[‚É‚È‚è‚Ü‚·B‚±‚ê‚́A/ / ‚͈̔͂̌ˆ’肪^‚Áæ‚ɍs‚í‚êA‚»‚ÌŽž“_‚ŃGƒ‰[‚ª”­¶‚·‚é‚̂ŁA\Q ‚ÌŒø‰Ê‚ð‹y‚Ú‚·‚±‚Æ‚ª‚Å‚«‚È‚¢‚©‚ç‚Å‚·B‚Ü‚½A/\Q‘Ήž•\\E/ ‚͍I‚­s‚«‚Ü‚¹‚ñB‚±‚ê‚́A‘Ήž•\\E ‚Æ‚¢‚¤•¶Žš—ñ‚ðŠÜ‚Þ‚à‚Ì‚É‚µ‚©ƒ}ƒbƒ`‚µ‚Ü‚¹‚ñB‚±‚ê‚́A\\ ‚Æ‚¢‚¤˜A‘±‚ª‚ ‚邽‚߁A\E ‚ª”FŽ¯‚³‚ê‚È‚¢‚©‚ç‚Å‚µ‚傤i‚½‚Ô‚ñjB
‚»‚Ì‚½‚߁A•Ï”‚É“ü‚ê‚āAƒ}ƒbƒ`‰‰ŽZŽq‚â’uŠ·‰‰ŽZŽq‚Ì’†‚Å“WŠJ‚³‚¹‚é‚Æ‚æ‚낵‚¢‚Å‚·B‚±‚Ì‚Æ‚«“ú–{Œê•¶Žš—ñ‚Í—\‚ßquotemeta ŠÖ”‚ŏˆ—‚µ‚Ä‚¨‚«‚Ü‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
$pat = quotemeta +(qw/ •\ /)[0];
$str =~ /$pat\d+/; # •\1, •\2, ..‚ȂǂɃ}ƒbƒ`
  # ‚µ‚©‚µ $str = 'Œ•\\1' ‚Å‚àƒ}ƒbƒ`‚·‚éi‚±‚Ì–â‘è‚ÍŒãqj

ã‚̂悤‚ȏ‘‚«•û‚ÍŠm‚©‚ɏX‚¢‚Å‚·‚ˁBƒNƒI[ƒg‚Ì’†‚Å \Q \E ‚ðŽg‚¤Žž‚́A³‚µ‚¢•¶Žš—ñ‚ª“ü‚Á‚Ä‚¢‚é•Ï”‚ƈꏏ‚É‚È‚ç–â‘肪‹N‚±‚è‚Ü‚¹‚ñB‚±‚¤‚·‚邱‚ƂŁA\Q \E ‚͈̔͂ª–¾Šm‚É‚È‚é‚©‚ç‚Å‚·B³‚µ‚¢•¶Žš—ñ‚̍ì‚è•û‚́A‘Oq‚̃Šƒeƒ‰ƒ‹‚̍ì‚è‚©‚½‚ðŽQl‚É‚µ‚ĉº‚³‚¢B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
$pat = "(?:\Q$str1\E|\Q$str2\E)*";
$str =~ /$pat/;

# ŽÀ‚͏ã‚Ì•¶‚ÍŽŸ‚Ì•¶‚Æ“™‰¿B
# $pat = "(?:" . quotemeta($str1) . "|" . quotemeta($str2) . ")*";

ƒŠƒeƒ‰ƒ‹‚ðƒNƒH[ƒg‚Ì’†‚É’¼Ú–„‚ß‚±‚Þ‚Æ‚¤‚Ü‚­s‚©‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B‚»‚ê‚́Aperl‚ª \E ‚Æ‚¢‚¤ƒƒ^•¶Žš‚ð”­Œ©‚µ‚悤‚Æ‚¢‚¤‚Ì‚ðAShift-JIS•¶Žš‚ª–W‚°‚邽‚ß‚Å‚·B
"\Q•\\E"‚ł́A•\E‚Ƀ}ƒbƒ`‚·‚鐳‹K•\Œ»‚É‚È‚è‚Ü‚·B•\‚Ì‘æ“ñƒoƒCƒg‚Ì \ ‚ÆŽŸ‚Ì \‚ª‡‚킳‚é‚̂ŁAperl‚É‚Í\Q \x95 \\ E‚Ì‘g‚ݍ‡‚킹‚Å‚ ‚é‚悤‚ÉŽv‚í‚ê‚Ü‚·B \Q‚̍ì—p‚ÌŒ‹‰Ê‚Í\\x95\\x5cE‚É‚È‚è‚Ü‚·B‚»‚Ì‚½‚߁A•\E‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
"\Q•\"‚Í‚Ç‚¤‚Å‚µ‚傤B‚±‚̏ꍇ‚́A" " ‚Ì”ÍˆÍ‚ðŒˆ‚ß‚é‚Æ‚«‚ɁA•\‚Ì‘æ“ñƒoƒCƒg‚ªŒã‚̃NƒH[ƒg‚ðƒGƒXƒP[ƒv‚µ‚Ä‚µ‚Ü‚¤‚̂ŁA•¶Žš—ñ‚͈̔͂ªŠú‘Ò‚µ‚½‚悤‚É‚Í’è‚܂炸AƒGƒ‰[‚É‚È‚è‚Ü‚·B‚±‚̃Gƒ‰[‚Í\Q‚ÌŒø‰Ê‚ðl—¶‚·‚é‘O‚É”­¶‚·‚é‚̂ŁA–h‚¬‚悤‚ª‚ ‚è‚Ü‚¹‚ñB
"\Q•\\\E"‚Í‚Ç‚¤‚Å‚µ‚傤BŠm‚©‚ÉShift-JIS‚Å‚Í–â‘è‚ ‚è‚Ü‚¹‚ñB‚µ‚©‚µ“¯‚¶ƒXƒNƒŠƒvƒg‚ðEUC-JP‚âUTF-8‚É•ÏŠ·‚µ‚½‚Æ‚«‚É‚Í–â‘肪‚ ‚è‚Ü‚·B•\\E‚Æ—]•ª‚È‚Q•¶Žš‚ª‚ ‚镶Žš—ñ‚Å‚È‚¢‚ƃ}ƒbƒ`‚µ‚Ü‚¹‚ñB‚Ç‚¿‚ç‚É‚µ‚ëA\‚ð‚Ç‚±‚É“Y‚¦‚é‚©‚ðl‚¦‚é•K—v‚ª‚ ‚é‚̂ŁA‚±‚±‚ÌŽïŽ|‚ɍ‡‚¢‚Ü‚¹‚ñB
³‹K•\Œ»‚͗Ⴆ‚΁AŽŸ‚̂悤‚É‚µ‚Ü‚·B‚à‚¿‚ë‚ñ‚±‚ê‚ÍShift-JIS‚Ì‚Ý‚É—LŒø‚Å‚·B
    $digit = '(?:[0-9]|\x82[\x4F-\x58])'; # ”Žši”¼Šp‚Æ‘SŠpj
    $upper = '(?:[A-Z]|\x82[\x60-\x79])'; # ƒAƒ‹ƒtƒ@ƒxƒbƒg‘啶Žši”¼Šp‚Æ‘SŠpj
    $lower = '(?:[a-z]|\x82[\x81-\x9A])'; # ƒAƒ‹ƒtƒ@ƒxƒbƒg¬•¶Žši”¼Šp‚Æ‘SŠpj
    $space = '(?:[\ \n\r\t\f]|\x81\x40)'; # ‹ó”’•¶Žši”¼Šp‚Æ‘SŠpj
    $ascii = '[\x00-\x7F]';               # ASCII•¶Žš

    # ‘SŠp•½‰¼–¼i‘÷“_E”¼‘÷“_E—x‚莚‚ðŠÜ‚ށj
    $hiraZ = '(?:\x82[\x9F-\xF1]|\x81[\x4A\x4B\x54\x55])'; 

    # ‘SŠp•Ð‰¼–¼i’·‰¹•„E‘÷“_E”¼‘÷“_E—x‚莚‚ðŠÜ‚ށj
    $kataZ = '(?:\x83[\x40-\x7E\x80-\x96]|\x81[\x5B\x4A\x4B\x52\x53])';

    # ”¼Šp•Ð‰¼–¼i”¼Šp’·‰¹•„E‹å“Ç“_‚ðŠÜ‚ށj
    $kataH = '[\xA1-\xDF]';

    $onebyte = '[\x00-\x7F\xA1-\xDF]';
    $twobyte = '(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'; 
    $char    = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';

    # JIS•¶Žš
    $all_JIS = '(?:[\x00-\x7f\xa1-\xdf]|'.
        . '\x81[\x40-\x7e\x80-\xac\xb8-\xbf\xc8-\xce\xda-\xe8\xf0-\xf7\xfc]|'
        . '\x82[\x4f-\x58\x60-\x79\x81-\x9a\x9f-\xf1]|'
        . '\x83[\x40-\x7e\x80-\x96\x9f-\xb6\xbf-\xd6]|'
        . '\x84[\x40-\x60\x70-\x7e\x80-\x91\x9f-\xbe]|'
        . '\x88[\x9f-\xfc]|\x98[\x40-\x72\x9f-\xfc]|\xea[\x40-\x7e\x80-\xa4]|'
        . '[\x89-\x97\x99-\x9f\xe0-\xe9][\x40-\x7e\x80-\xfc])';

    # ƒxƒ“ƒ_’è‹`•¶Žš

    # NEC“ÁŽê•¶Žš
    $NEC_special = '(?:\x87[\x40-\x5d\x5f-\x75\x7e\x80-\x9c])';

    # NEC‘I’èIBMŠg’£•¶Žš
    $NEC_IBM_ext = '(?:\xed[\x40-\x7e\x80-\xfc]|\xee[\x40-\x7e\x80-\xec\xef-\xfc])';

    # IBMŠg’£•¶Žš
    $IBM_ext     = '(?:[\xfa-\xfb][\x40-\x7e\x80-\xfc]|\xfc[\x40-\x4b])';


Shift-JIS‚Ń}ƒbƒ`‚ðs‚¤Žž‚ɂ́A‚Q‚‚̖â‘肪‚ ‚è‚Ü‚·B
‘æ“ñƒoƒCƒg‚ªASCII‚̗̈æ‚É“ü‚镶Žš‚ª‚ ‚é‚̂ŁAASCII‚ðŠÜ‚Þƒpƒ^[ƒ“‚Ƀ}ƒbƒ`‚·‚é‰Â”\«‚ª‚ ‚éB 
‚ ‚镶Žš‚Ì‘æ“ñƒoƒCƒg‚ÆŽŸ‚Ì•¶Žš‚Ì‘æˆêƒoƒCƒg‚ª‚P•¶Žš‚Å‚ ‚é‚©‚̂悤‚Ƀ}ƒbƒ`‚µ‚Ä‚µ‚Ü‚¤B 
ŒãŽÒ‚ÍEUC-JP‚Å‚à‹N‚±‚肤‚é–â‘è‚Å‚·iUTF-8‚È‚ç‹N‚±‚ç‚È‚¢‚ªA¡‚Í‚»‚ꂪ–â‘è‚È‚Ì‚Å‚Í‚È‚¢jB‚µ‚©‚µ‘OŽÒ‚ÍEUC-JP‚Å‚Í‹N‚±‚ç‚È‚¢‚ªAShift-JIS‚Å‚Í‹N‚±‚肤‚é–â‘è‚Å‚·B‚±‚ê‚ç‚ð–h‚®•û–@‚́AŒ‹‹Ç“¯‚¶‚±‚Æ‚Å‚·‚ªA³‹K•\Œ»‚Ì’†‚ɁAí‚ɐ擪‚ðŠÜ‚Ü‚¹‚邱‚Æ‚Å‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
# æ“ª‚©‚çƒ}ƒbƒ`
$str =~ /^$char*?(?:$pat)/;

––”ö‚©‚ç‚̃}ƒbƒ`‚Å‚Í‚¤‚Ü‚­s‚©‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B"‰E" =~ /E$/‚ðl‚¦‚ê‚Ώ\•ª‚Å‚µ‚傤B‚Ü‚½A"\x8E" x 30 . "E"‚Í$str = "ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽE"‚Å‚ ‚邪A"\x8E" x 31 . "E"‚Í$str = "ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽE"‚Å‚ ‚è‚Ü‚·‚©‚çAShift-JIS•¶Žš—ñ‚ðŒã‚ë‚©‚çØ‚蕪‚¯‚é“KØ‚È•û–@‚Í‚È‚¢‚ƍl‚¦‚ç‚ê‚Ü‚·B
­‚È‚­‚Æ‚àA‚QƒoƒCƒg•¶Žš‚ð\¬‚µ‚È‚¢ƒoƒCƒg [\x00-\x3F\x7F] ‚ªŒ©‚‚©‚鏊‚܂ŁA‹É’[‚ȏꍇ‚Í•¶Žš—ñ‚̍ŏ‰‚܂ŃXƒLƒƒƒ“‚µ‚È‚¢‚Æ‚í‚©‚炸A‚µ‚©‚àŒã“Ç‚Ý lookbehind ‚̐³‹K•\Œ» (?<=PATTERN)‚͍¡‚̏ŠA•s’è’·‚É‚Å‚«‚Ü‚¹‚ñi(?<=(?:\A|[\x00-\x3F\x7F])$char*) ‚Æ‚Í‚Å‚«‚È‚¢j‚̂ŁAæ“ª‚©‚當Žš’PˆÊ‚ł΂炵‚Ä‚©‚珈—‚·‚é‚Ì‚ªAŒ‹‹Ç‚ÍŠÈ•Ö‚È‚Ì‚©‚à‚µ‚ê‚Ü‚¹‚ñB
ƒOƒ[ƒoƒ‹ƒ}ƒbƒ`
ƒOƒ[ƒoƒ‹ƒ}ƒbƒ` /g ‚̏ꍇ‚́A\G‚ðŽg‚¢‚Ü‚µ‚傤B\G‚Í‘O‰ñƒ}ƒbƒ`‚µ‚½•”•ª‚Ì––”ö‚ðŽw‚µ‚Ü‚·B
ŽŸ‚Ì—á‚ł́A’uŠ·‚³‚ê‚È‚¢‚Ì‚ª–]‚Ü‚µ‚¢‚Ì‚Å‚·‚ªA\G‚ª‚È‚¢‚̂ŁAæ“ª‚©‚çŠJŽn‚µ‚Ä•¶Žš—ñ‘S‘̂܂ʼn„‚тă}ƒbƒ`‚µ‚È‚©‚Á‚½‚ ‚ƁA‰ü‚߂Đ擪‚©‚ç‚PƒoƒCƒgi‚ñ‚¾ˆÊ’u‚©‚çƒXƒLƒƒƒ“‚ðÄŠJ‚·‚é‚̂ŁA‚¸‚ꂽˆÊ’u‚Ȃ̂Ƀ}ƒbƒ`‚µ‚½‚ƍl‚¦‚Ä‚µ‚Ü‚¢‚Ü‚·B\G‚ðŽg‚í‚È‚¢‚ƁAŠÔˆá‚Á‚½ˆÊ’u‚Ƀ}ƒbƒ`‚·‚é‚©‚à‚µ‚ê‚È‚¢‚¤‚¦‚ɁA—]Œv‚ȍČŸ¸‚ð‚·‚é‚̂ŁAŽžŠÔ‚à‚©‚©‚è‚Ü‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
    $str = 'ŽŽŽŽŽŽŽŽEŽŽŽŽŽŽŽŽE';
    $pat = 'ŽE';
    $str =~ s/\G($char*?)($pat)/${1}E/og;
    # 'ŽŽŽŽŽŽŽŽEŽŽŽŽŽŽŽŽE' ‚̂܂܁i³‚µ‚¢jB

\G‚ð•t‚¯‚È‚¢ê‡

    $str = 'ŽŽŽŽŽŽŽŽEŽŽŽŽŽŽŽŽE';
    $pat = 'ŽE';
    $str =~ s/($char*?)($pat)/${1}E/og; # 'ŽE' ‚ª‚ ‚ê‚Î 'E' ‚É’uŠ·
    print  $str;
    # 'ŽŽŽŽŽŽŽEŽŽŽŽŽŽŽE' ‚É‚È‚Á‚Ä‚µ‚Ü‚¤i‚¨‚©‚µ‚¢jB

@@@@ŽŽŽŽŽŽŽŽEŽŽŽŽŽŽŽŽE
‚P‰ñ–ځ@¨¨¨¨/¨¨¨¨/  iƒ}ƒbƒ`‚µ‚È‚¢j
‚Q‰ñ–ځ@|¨¨¨Ë|||||||||  iƒ}ƒbƒ`‚µ‚½‚Ì‚Å’uŠ·j
‚R‰ñ–ځ@|||||||||¨¨¨¨/  iƒ}ƒbƒ`‚µ‚È‚¢j
‚S‰ñ–ځ@||||||||||¨¨¨Ë  iƒ}ƒbƒ`‚µ‚½‚Ì‚Å’uŠ·j

@–}—áF ¨@$char‚ª‚QƒoƒCƒg•¶Žš‚Ƀ}ƒbƒ`
@@@@@/@$char‚ª‚PƒoƒCƒg•¶Žš‚Ƀ}ƒbƒ`
@@@@ Ë@$pat‚ªƒ}ƒbƒ`
@@@@@|@ƒXƒLƒƒƒ“‚͈̔͊O

‚½‚¾‚µAƒpƒ^[ƒ“‚ªƒ[ƒ•¶Žš•‚Ƀ}ƒbƒ`‚·‚éê‡‚ɂ́A’ˆÓ‚ª•K—v‚Å‚·BŽŸ‚Ì—á‚́AuƒAv‚Ì‘O‚É 'Z' ‚ð“ü‚ê‚é‚à‚Ì‚Å‚·B‘æ‚P—á‚Í•¶Žš‚Ì‚¸‚êi'ƒA' : 0x8341‚ɑ΂µ‚Ä'‹ƒA' : 0x8B8341‚ª‚¸‚ê‚ă}ƒbƒ`‚·‚éj‚ð–h‚¢‚Å‚¢‚Ü‚¹‚ñB‘æ‚Q—á‚́Aã‚Ì•û–@‚Łu‚¸‚êv‚ð–h‚²‚¤‚Æ‚µ‚½‚Ì‚Å‚·‚ªAZ ‚Ö‚Ì’uŠ·‚ª˜A‘±‚µ‚Ä‹N‚±‚Á‚Ä‚¢‚Ü‚·B
‚±‚ê‚Í‘æ‚R—á‚̂悤‚É‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚±‚ê‚́A‘æ‚Q—á‚ł́u‚È‚ºHv‚ɏ‘‚¢‚½‚悤‚ɁA’uŠ·‚³‚ê‚é‚©‚ç‚ƍl‚¦‚ç‚ê‚Ü‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
$str = "ƒAƒCƒEƒGƒAƒAƒCƒEƒA‹ƒA";

print +($temp = $str) =~ s/(?=ƒA)/Z/g, $temp;

print +($temp = $str) =~ s/\G($char*?)(?=ƒA)/${1}Z/g, $temp;

print +($temp = $str) =~ s/\G(\A|$char+?)(?=ƒA)/${1}Z/g, $temp;

Œ‹‰Ê 
5    ZƒAƒCƒEƒGZƒAZƒAƒCƒEZƒA‹ZƒA
7    ZƒAƒCƒEƒGZZƒAZZƒAƒCƒEZZƒA‹ƒA
4    ZƒAƒCƒEƒGZƒAZƒAƒCƒEZƒA‹ƒA

‚È‚ºH 
     ƒA   ƒC   ƒE   ƒG   ƒA   ƒA   ƒC   ƒE   ƒA   ‹ƒ   A
1  \G Z
2  \G$char$char$char$char Z
3                      \G Z
4                      \G$char Z
5      ˆÈ‰ºAÈ—ª

‚‚܂èAƒOƒ[ƒoƒ‹ƒ}ƒbƒ`‚ł́Aƒ}ƒbƒ`‚ªƒ[ƒ•¶Žš•‚Å‚È‚¢ƒpƒ^[ƒ“‚Ì‘O‚É‚Í\G($char*?)‚ðAƒ[ƒ•¶Žš•‚Å‚ ‚éƒpƒ^[ƒ“‚Ì‘O‚É‚Í\G(\A|$char+?)‚ð“ü‚ê‚é•K—v‚ª‚ ‚è‚Ü‚·B
‚½‚¾‚µA‚±‚ê‚Å‚à³‚µ‚­iHjƒ}ƒbƒ`‚³‚¹‚ç‚ê‚È‚¢ê‡‚ª‚ ‚è‚Ü‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
$str = "0123000123";

print +($temp = $str) =~ s/0*/Z/g, $temp;

print +($temp = $str) =~ s/\G($char*?)0*/${1}Z/g, $temp;

print +($temp = $str) =~ s/\G(\A|$char+?)0*/${1}Z/g, $temp;
__END__
 9    ZZ1Z2Z3ZZ1Z2Z3Z
14    ZZ1ZZ2ZZ3ZZ1ZZ2ZZ3ZZ
 7    Z1Z2Z3Z1Z2Z3Z

‚±‚ê‚́Aƒpƒ^[ƒ“‚ªƒ[ƒ•¶Žš•‚Ƀ}ƒbƒ`‚·‚é‚à‚Ì‚Å‚ ‚é‚ƁA/g‚ª‚»‚̏ê‚Å–³ŒÀ‚É‘«“¥‚Ý‚µ‚ďI—¹‚µ‚È‚­‚È‚é‚Ì‚ð–h‚®‚½‚߁Aperl‚́Aƒ}ƒbƒ`‚ð‹­§“I‚ɐi‚ß‚Ä‚¢‚é‚Ì‚Å‚·‚ªicf. perlre, Repeated patterns matching zero-length substringjA‚±‚̐i‚ß•û‚̐^Ž—i‚µ‚©‚àƒoƒCƒg’PˆÊ‚Å‚Í‚È‚­A•¶Žš’PˆÊ‚Ői‚Þ‚à‚́j‚ªA\G($char*?)‚â\G(\A|$char+?)‚ł́A‚¤‚Ü‚­‚Å‚«‚È‚¢‚©‚ç‚Å‚·B‚à‚Á‚Æ‚à‚±‚¤‚¢‚¤ƒ}ƒbƒ`‚ð‚·‚é‚±‚Ƃ́A‚Ù‚Æ‚ñ‚Ç‚È‚¢‚ƍl‚¦‚ç‚ê‚Ü‚·‚̂ŁA‹C‚É‚·‚é•K—v‚Í‚È‚¢‚Ì‚©‚à’m‚ê‚Ü‚¹‚ñiƒ•‰‚¯É‚µ‚݁jB
ƒAƒ‹ƒtƒ@ƒxƒbƒg‚̑啶Žš‚Ə¬•¶Žš
Shift-JIS‚Ì‚QƒoƒCƒg•¶Žš‚Ì’†‚ɂ́A‘æ‚QƒoƒCƒg‚ªASCII‚ʼnpŽš‚É“–‚½‚é‚à‚Ì‚ª‚ ‚è‚Ü‚·B‚»‚Ì‚½‚߁AŠÖ” uc, lc ‚âAƒƒ^•¶Žš \U, \L‚ª‚QƒoƒCƒg•¶Žš‚̈ꕔ‚ð•ÏŠ·‚µ‚Ä‚µ‚Ü‚Á‚½‚èi‚µ‚©‚µŠÖ” ucfirst, lcfirst ‚â ƒƒ^•¶Žš \u, \l ‚Í–â‘è‚Æ‚È‚ç‚È‚¢jAm//i ‚â s///i‚È‚Ç‚Ì /iCüŽq‚É‚æ‚Á‚ĈႤ•¶Žš‚Ȃ̂Ƀ}ƒbƒ`‚µ‚Ä‚µ‚Ü‚Á‚½‚è‚·‚邱‚Æ‚ª‚ ‚è‚Ü‚·B
Shift-JIS•¶Žš—ñ‚ÉŠÜ‚Ü‚ê‚éASCII‚̉pŽš‚ð‘啶Žš‚Ü‚½‚͏¬•¶Žš‚É‘µ‚¦‚½‚¢‚È‚çA—Ⴆ‚΁AŽŸ‚̂悤‚ȃTƒuƒ‹[ƒ`ƒ“‚ðì‚ê‚ÎŽÀŒ»‚Å‚«‚Ü‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';

lc("PERLƒvƒƒOƒ‰ƒ~ƒ“ƒO");      # 'perlƒvƒƒoƒ‰ƒ~ƒ“ƒo'
tolower("PERLƒvƒƒOƒ‰ƒ~ƒ“ƒO"); # 'perlƒvƒƒOƒ‰ƒ~ƒ“ƒO'

sub tolower {
  my $str = $_[0];
  $str =~ s/\G($char*?)([A-Z]+)/$1\L$2/g;
  $str;
}

sub toupper {
  my $str = $_[0];
  $str =~ s/\G($char*?)([a-z]+)/$1\U$2/g;
  $str;
}

ƒP[ƒX–³Ž‹‚̃}ƒbƒ` /i ‚̏ꍇ‚́A—Ⴆ‚Î 'ƒG'‚Ì‘æ“ñƒoƒCƒg‚Í 'G' ‚Å‚ ‚èA'ƒg'‚Ì‘æ“ñƒoƒCƒg‚Í 'g' ‚Å‚ ‚邱‚Æ‚©‚çA'ƒG' =~ /ƒg/i‚̓}ƒbƒ`‚µ‚Ü‚·B‚Å‚·‚©‚çAShift-JIS‚Ő³Šm‚ȃ}ƒbƒ`‚ð‚µ‚½‚¯‚ê‚΁A/iCüŽq‚ÍŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB
‚©‚í‚è‚ɁA•¶Žš—ñ‚ÉŠÜ‚Ü‚ê‚éƒAƒ‹ƒtƒ@ƒxƒbƒgi“ñƒoƒCƒg•¶Žš‚Ì‘æ‚QƒoƒCƒg‚É‚ ‚é‚à‚Ì‚ðœ‚­j‚ð¬•¶Žši‚Ü‚½‚͑啶ŽšA‚Ç‚¿‚ç‚©j‚É“ˆê‚µ‚ă}ƒbƒ`‚³‚¹‚Ü‚·Btolower‚Ì’è‹`‚͏ã‚ð‚²——‰º‚³‚¢B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';

$lcstr = tolower($str);
$lckey = tolower(quotemeta $key);

if ($lcstr =~ /^$char*?$lckey/) {
    print "matched";
}
else {
    print "not matched";
}

‚Ü‚½‚Í–„‚ߍž‚ݏCüŽq (?ismx-ismx) ‚ð—p‚¢‚Ä‚àD‚¢Œ‹‰Ê‚𓾂ç‚ê‚Ü‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
"‘æ‚P‰ñPerluk‚Ì‚²ˆÄ“à" =~ /^$char*?PERLuK/i       # ƒ}ƒbƒ`‚·‚éi¢‚éj
"‘æ‚Q‰ñPerluk‚Ì‚²ˆÄ“à" =~ /^$char*?((?i)PERL)uK/  # ƒ}ƒbƒ`‚µ‚È‚¢i—Ç‚µj
"‘æ‚R‰ñPerluK‚Ì‚²ˆÄ“à" =~ /^$char*?((?i)PERL)uK/  # ƒ}ƒbƒ`‚·‚éi—Ç‚µj

‘SŠp‚QƒoƒCƒgƒAƒ‹ƒtƒ@ƒxƒbƒg‚̃P[ƒX–³Ž‹‚́A‘I‘ð‚É‚æ‚èŽÀŒ»‚Å‚«‚Ü‚·i‚ªA‚â‚Á‚Ï‚è•ÏjB'‚`'‚Ì‘æ‚QƒoƒCƒg‚ª '`' ‚È‚Ì‚àA‚¿‚å‚Á‚Æ’ˆÓ‚Å‚·im`` ‚È‚Ç‚Ì‚Æ‚«’v–½“IƒGƒ‰[‚É‚È‚éB‚½‚¾‚µƒoƒbƒNƒNƒH[ƒg‚ðŽg‚¤ˆÓ–¡‚Í“Á‚É‚È‚¢jBŒ´‘¥“I‚ɂ̓Šƒeƒ‰ƒ‹‚ðƒ}ƒbƒ`‰‰ŽZŽq‚â’uŠ·‰‰ŽZŽq‚É’¼Ú–„‚ߍž‚Þ‚Ì‚Í”ð‚¯‚½‚¢Š‚Å‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
/(?:‚o|‚)(?:‚d|‚…)(?:‚q|‚’)(?:‚k|‚Œ)/;

‚»‚Ì‘ã‚í‚è‚É‚±‚ñ‚ȃTƒuƒ‹[ƒ`ƒ“‚ðì‚Á‚Ä‚Ý‚Ä‚à‚æ‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB
ƒTƒ“ƒvƒ‹ƒR[ƒh 
$CharRE = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
 
$pat = make_regexp_ignorecase("‚o‚d‚q‚kuK");
print "‘æ‚T‰ñ‚o‚…‚’‚ŒuK‰ï" =~ /^$char*?$pat/ ? "OK": "NOT";

sub make_regexp_ignorecase {
  my $str = $_[0];
  $str =~ s/\G([A-Za-z]+|$CharRE)/
    my $c = ord $1;
    if($c == 0x82) {
      my $v = vec($1,1,8);
      0x81 <= $v && $v <= 0x9A ? sprintf('\\x82[\\x%2x\\x%2x]', $v, $v-33) :
      0x60 <= $v && $v <= 0x79 ? sprintf('\\x82[\\x%2x\\x%2x]', $v, $v+33) :
      quotemeta($1);
    } 
    elsif(0x41 <= $c && $c <= 0x5A || 0x61 <= $c && $c <= 0x7A) {"(?:(?i)$1)"}
    else {quotemeta($1)}
  /geo;
  $str;
}

’·‚¢•¶Žš—ñ‚ɑ΂·‚鐳‹K•\Œ»ŒŸõ
³‹K•\Œ»‚́APerl ‚É‚Æ‚Á‚ÄŒ‡‚©‚¹‚È‚¢‘¶Ý‚Æ‚¢‚¦‚Ü‚·B‚µ‚©‚µ³‹K•\Œ»‚̐§ŒÀ‚Æ‚µ‚āA*, +, {min,max} ‚È‚Ç‚Ì—ÊŽw’èŽq‚ªƒ}ƒbƒ`‚ðŒJ‚è•Ô‚¹‚é‰ñ”‚̏ãŒÀ‚Æ‚¢‚¤–â‘肪‚ ‚è‚Ü‚·B(Ú×‚Í perlre ŽQÆ‚Ì‚±‚Æ)B‚»‚Ì‚½‚߁A$char*? ‚Æ‚¢‚¤³‹K•\Œ»‚ɂ́AŠëŒ¯«‚ª‚ ‚è‚Ü‚·B
—Ⴆ‚΁AŽŸ‚̂悤‚ȃ}ƒbƒ`ƒ“ƒO‚ðl‚¦‚ÄŒ©‚Ü‚µ‚傤B$str‚́Au‚ v‚ª10–œŽš˜A‘±‚µ‚½‚ ‚ƂɁAuƒAƒCABCv‚ª˜AŒ‹‚³‚ꂽ•¶Žš—ñ‚Å‚·B‚±‚̂悤‚È•¶Žš—ñi‚½‚¾‚µAuw‚ x‚ª10–œŽš˜A‘±v‚Æ‚¢‚¤‚±‚Æ‚Í•ª‚©‚炸A”CˆÓ‚Ì Shift-JIS ƒeƒLƒXƒg‚Å‚ ‚낤‚Æ‚¢‚¤‚±‚Æ‚É‚µ‚Ü‚·j‚©‚çA”¼ŠpƒAƒ‹ƒtƒ@ƒxƒbƒg‚ª˜A‘±‚µ‚½•”•ª‚ðŒ©‚Â‚¯‚½‚¢‚Æ‚µ‚Ü‚µ‚傤B‚·‚é‚ƁA¡‚܂ł̍l‚¦•û‚©‚ç‚·‚é‚ƁAŽŸ‚̂悤‚É‚·‚ê‚΂悢‚ÆŽv‚í‚ê‚Ü‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
my $char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
my $str = ('‚ ' x 100000) . 'ƒAƒCABC';
$str =~ /^$char*?([A-Z]+)/o;
print $1;

‚µ‚©‚µA‚±‚ê‚́AŠÂ‹«‚É‚æ‚Á‚ẮA‘å‚«‚ȃGƒ‰[‚ðˆø‚«‹N‚±‚µ‚Ü‚·B—Ⴆ‚΁AWindows 98ã‚Å Active Perl 522 ‚ð—p‚¢‚½ê‡AError: Runtime exception ‚Æ‚¢‚¤ Perl ‚̃Gƒ‰[‚É‚È‚è‚Ü‚µ‚½B‚Ü‚½AWindows 98ã‚ÅVC++ 6.0‚ŃRƒ“ƒpƒCƒ‹‚³‚ꂽ Perl 5.6.1 ‚¾‚ƁAu‚±‚̃vƒƒOƒ‰ƒ€‚Í•s³‚ȏˆ—‚ðs‚Á‚½‚Ì‚Å‹­§I—¹‚³‚ê‚Ü‚·B`v‚È‚Ç‚Æ‚¢‚Á‚½ƒGƒ‰[‚É‚È‚è‚Ü‚µ‚½B
‚±‚̂悤‚È–â‘è‚ð‚Å‚«‚邾‚¯–h‚®‚½‚߂ɂ́AŽŸ‚̂悤‚É‚µ‚Ü‚·B‚‚܂èA•¶Žš—ñ‚̐擪‚©‚ç’²‚ׂĂ¢‚­ê‡A“ñƒoƒCƒg•¶Žš‚Ì•¶Žš‹«ŠE‚ðŠÔˆá‚¦‚é‚̂́A“ñƒoƒCƒg•¶Žš‚Ì‘æˆêƒoƒCƒg‚Ì’¼Œã‚𕶎š‹«ŠE‚ÆŒë”FŽ¯‚µ‚½Žž‚¾‚¯‚Å‚·BShift-JIS‚ł́A“ñƒoƒCƒg•¶Žš‚Ì‘æˆêƒoƒCƒg‚́A[\x81-\x9F\xE0-\xFC] ‚¾‚¯‚Å‚·B‚ ‚é‚¢‚́AEUC-JP ‚É•ÏŠ·‰Â”\‚ȗ̈悾‚¯‚ðl—¶‚·‚ê‚΁A[\x81-\x9F\xE0-\xEF] ‚¾‚¯‚Æ‚¢‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚»‚êˆÈŠO‚̃oƒCƒg‚Ì’¼Œã‚́A—Ⴆ‚΁A0x41 ‚Ì’¼Œã‚́A'A' ‚Ì’¼Œã‚©A'ƒA' ‚Ì’¼Œã‚©‚Í•ª‚©‚è‚Ü‚¹‚ñ‚ªAŠm‚©‚É•¶Žš‹«ŠE‚É‚È‚è‚Ü‚·B]‚Á‚āA[\x81-\x9F\xE0-\xFC]+ i‚Ü‚½‚Í [\x81-\x9F\xE0-\xEF]+ j‚̃oƒCƒgi“ñƒoƒCƒg•¶Žšj‚ª˜A‘±‚·‚é‚Æ‚±‚낾‚¯‚É’ˆÓ‚·‚ê‚΂悢‚±‚Æ‚É‚È‚è‚Ü‚·B
‚±‚Ì‚½‚߁AˆÈ‰º‚̂悤‚ɁA^$char*? ‚Ì‘ã‚í‚è‚É $Apad ‚ðŽg‚¢A\G$char*? ‚Ì‘ã‚í‚è‚É $Gpad ‚ð—p‚¢‚ê‚΁AˆêƒoƒCƒg•¶Žš‚©A“ñƒoƒCƒg•¶Žš‚Ì‚¤‚¿‘æ“ñƒoƒCƒg‚ª [\x40-\x7E\x80\xA0-\xDF] ‚ŏI‚í‚é‚à‚Ì‚ªA­‚È‚­‚Æ‚à“K“–‚ÈŠÔŠu‚ŁiãŒÀ‚É’B‚µ‚È‚¢‚¤‚¿‚ɁjoŒ»‚·‚ê‚΁AƒGƒ‰[‚ɂȂ炸‚ɏˆ—‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·BiŠm—¦“I‚È–â‘è‚Å‚·‚̂ŁAŠ®‘S‚Å‚Í‚ ‚è‚Ü‚¹‚ñBj
ƒTƒ“ƒvƒ‹ƒR[ƒh 
# ˆê‰ñ‚¾‚¯ƒ}ƒbƒ`
my $Apad  = '(?:(?:\A|[\x00-\x80\xA0-\xDF])(?:[\x81-\x9F\xE0-\xFC]{2})*?)';
my $str1 = ('‚ ' x 100000) . 'ƒAƒCABC';
$str1 =~ /$Apad([A-Z]+)/o;
print "$1\n"; # "ABC" ‚Æ•\Ž¦‚³‚ê‚éB

# ƒOƒ[ƒoƒ‹ƒ}ƒbƒ`
my $Gpad  = '(?:(?:\G|[\x00-\x80\xA0-\xDF])(?:[\x81-\x9F\xE0-\xFC]{2})*?)';

my $str2 = '‚ ' x 100000 . 'ƒAƒCABC'. '‚¨' x 100000 . 'XYZ';
my @array = $str2 =~ /$Gpad([A-Z]+)/go;
print "@array\n"; # "ABC XYZ" ‚Æ•\Ž¦‚³‚ê‚éB

ŠOŽš‚Ì•ÏŠ·
ƒxƒ“ƒ_’è‹`•¶Žš‚⃆[ƒU’è‹`•¶Žš‚ðŠÜ‚Þ•¶Žš—ñ‚𑼂̊‹«‚Å‚à—˜—p‚Å‚«‚é‚悤‚É‚·‚é‚ɂ́A“KØ‚È•ÏŠ·‚ª•K—v‚Å‚·i–³˜_A‚Ü‚Á‚½‚­“¯‚¶Žš‘Ì‚Ì—˜—p‚Í‚Ù‚Æ‚ñ‚Ç–]‚ß‚¸A‚¨‚»‚ç‚­‚Í—ÞŽ—‚µ‚½•¶Žš‚╶Žš—ñ‚É•ÏŠ·‚·‚邱‚Æ‚É‚È‚é‚Å‚µ‚傤jB‚±‚ê‚ÍPerl‚Å‚Í’uŠ·‰‰ŽZŽq s/// ‚ðŽg‚¦‚ΔäŠr“I—eˆÕ‚ÉŽÀŒ»‚Å‚«‚Ü‚·B
‚ ‚ç‚©‚¶‚߁A‚Ç‚ÌŠOŽš‚ð‚Ç‚¤•ÏŠ·‚·‚é‚©‚ð’è‹`‚·‚é•ÏŠ·ƒe[ƒuƒ‹‚ð—pˆÓ‚µ‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñB‚±‚ê‚ÍPerl‚ł̓nƒbƒVƒ…‚É‚µ‚Ä‚¨‚­‚Æ‚»‚ÌŒã‚̏ˆ—‚ªŠy‚É‚È‚è‚Ü‚·B‚±‚±‚ł́A'w932_gai.txt'‚Å’è‹`‚·‚éAWindows codepage-932ƒR[ƒh‚ÉŠî‚¢‚½‹@ŽíˆË‘¶•¶Žš‚́i•”•ª“Ij•ÏŠ·ƒe[ƒuƒ‹‚ðŽg‚¤‚±‚Æ‚É‚µ‚Ü‚·B
ŽŸ‚̃R[ƒh‚ł́A‚P•¶Žš‚ƒ}ƒbƒ`‚³‚¹A‚»‚Ì•¶Žš‚ª•ÏŠ·ƒnƒbƒVƒ…‚̃L[‚É‚ ‚ê‚ΑΉž‚·‚é’l‚Ì•¶Žš—ñ‚É’uŠ·‚µA‚»‚¤‚Å‚È‚¯‚ê‚΂»‚Ì‚Ü‚ÜŽc‚µ‚Ü‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
require 'w932_gai.txt'; # %table‚Ì’è‹`i•sŠ®‘SIj

$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';

$str =~ s/($char)/exists $table{$1} ? $table{$1} : $1/geo;

“¯—l‚ȏˆ—‚́A‚‚¬‚̂悤‚ȏ‘‚«•û‚Å‚à‚Å‚«‚Ü‚·‚ªAŠOŽš‚Ƀ}ƒbƒ`‚·‚鐳‹K•\Œ» $gaiji‚ð—pˆÓ‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚¸‚ꂽƒ}ƒbƒ`‚ð‚µ‚È‚¢‚½‚߂ɁA‚±‚¿‚ç‚̐³‹K•\Œ»‚É‚Í \G ‚ª•K—v‚Å‚·B—Ⴆ‚΁A$str = '‡@';‚ÌŒã‚ë‚QƒoƒCƒg‚Í "\x87\x40" ‚Å‚·‚ªA‚±‚¤‚·‚ê‚΃}ƒbƒ`‚ª‚¸‚ê‚éS”z‚ª‚ ‚è‚Ü‚¹‚ñB‚Ü‚½A”ñ—~’£‚èƒ}ƒbƒ` ($char*?)‚ðŽg‚¦‚Î $char ‚ªŠOŽš‚Ƀ}ƒbƒ`‚µ‚È‚¢‚悤•ÏX‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
ƒTƒ“ƒvƒ‹ƒR[ƒh 
require 'w932_gai.txt'; # %table‚Ì’è‹`i•sŠ®‘SIj

$char  = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
$gaiji = '(?:[\x87][\x40-\x9c])';

$str =~ s/\G($char*?)($gaiji)/$1$table{$2}/g;

CP932d•¡’è‹`•¶Žš‚Ì•ÏŠ·
Microsoft Windows “ú–{Œê”łňê”Ê“I‚ÉŽg—p‚³‚ê‚Ä‚¢‚éƒR[ƒhƒy[ƒW 932 (CP932) ‚ł́AŠô‚‚©‚Ì•¶Žš‚ªd•¡‚µ‚Ä’è‹`‚³‚ꂽó‘Ô‚É‚È‚Á‚Ä‚¢‚Ü‚·B‚±‚±‚ŁA•¶Žš‚ªd•¡’è‹`‚³‚ê‚Ä‚¢‚é‚Ƃ́AUnicode‚Ì“¯‚¶•„†ˆÊ’u‚ɑΉž•t‚¯‚ç‚ê‚Ä‚¢‚邱‚Æ‚Æ‚µ‚Ü‚·B
—Ⴆ‚΁ACP932 -> Unicode -> CP932 ‚̏‡‚Å•ÏŠ·‚³‚ê‚é‚ƁAd•¡’è‹`•¶Žš‚́A‚Ç‚ê‚©ˆê‚‚ɑµ‚¦‚ç‚ê‚Ü‚·B‚±‚Ì—Dæ‡ˆÊ‚Í JIS X 0208, NEC“ÁŽê•¶Žš (13‹æ)AIBMŠg’£•¶Žš (115`119‹æ)ANEC‘I’èIBMŠg’£•¶Žš (89`92‹æ) ‚̏‡‚Å‚·Bˆê—á‚Æ‚µ‚āA'æ' ‚̏ꍇANEC“ÁŽê•¶Žš‚Ì "\x87\x9A" ‚â IBMŠg’£•¶Žš‚Ì "\xFA\x5B" ‚́AJIS X 0208 ‚Ì "\x81\xE6" ‚É‚È‚è‚Ü‚·B
‚µ‚©‚µACP-932 ‚̃eƒLƒXƒg’†Ad•¡’è‹`•¶Žš‚ª‚Ç‚ê‚©‚É‘µ‚Á‚Ä‚¢‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B—Ⴆ‚Î "\x87\x9A" ‚â "\xFA\x5B" ‚ªŠÜ‚Ü‚ê‚Ä‚¢‚é‚ƁAƒeƒLƒXƒg‚ð–Ú‚ÅŒ©‚é‚ƈႢ‚ª‚È‚¢‚̂ɁA"\x81\xE6" ‚ÅŒŸõ‚µ‚Ä‚àŒ©‚‚¯‚ç‚ê‚È‚¢‚±‚Æ‚É‚È‚è‚Ü‚·B
d•¡’è‹`•¶Žš‚𑵂¦‚郂ƒWƒ…[ƒ‹‚Æ‚µ‚āAShiftJIS/CP932/Correct.pm ‚ª‚ ‚è‚Ü‚·B“üŽè‚ÆŽg‚¢•û‚ÍPerl‚̃y[ƒW‚É–ß‚ê‚ÎŒ©‚‚©‚è‚Ü‚·B
‚Ü‚½AShiftJIS/String.pm ‚Ì strtr() ‚Ü‚½‚Í trclosure() ‚ðŽg‚¤•û–@‚à‚ ‚è‚Ü‚·B“üŽè‚ÆŽg‚¢•û‚ÍPerl‚̃y[ƒW‚É–ß‚ê‚ÎŒ©‚‚©‚è‚Ü‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 

# (1) $necJIS -> $jisNEC (9‘Î)
   $necJIS = "\x87\x90\x87\x91\x87\x92\x87\x95\x87\x96\x87\x97\x87\x9A\x87\x9B\x87\x9C";
      # NEC“ÁŽê•¶Žš‚Ì‚¤‚¿AJIS•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš
   $jisNEC = "\x81\xE0\x81\xDF\x81\xE7\x81\xE3\x81\xDB\x81\xDA\x81\xE6\x81\xBF\x81\xBE";
      # JIS•¶Žš‚Ì‚¤‚¿ANEC“ÁŽê•¶Žš‚ɏd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš

# (2) $necibmJIS -> $jisNECIBM (1‘Î)
   $necibmJIS = "\xEE\xF9";
      # NEC‘I’èIBMŠg’£•¶Žš‚Ì‚¤‚¿AJIS•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš
   $jisNECIBM = "\x81\xCA";
      # JIS•¶Žš‚Ì‚¤‚¿ANEC‘I’èIBMŠg’£•¶Žš‚ɏd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš

# (3) $ibmJIS -> $jisIBM (2‘Î)
   $ibmJIS = "\xFA\x54\xFA\x5B";
      # IBMŠg’£•¶Žš‚Ì‚¤‚¿AJIS•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš
   $jisIBM = "\x81\xCA\x81\xE6";
      # JIS•¶Žš‚Ì‚¤‚¿AIBMŠg’£•¶Žš‚ɏd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš

# (4) $ibmNEC -> $necIBM (13‘Î)
   $ibmNEC = "\xFA\x4A-\xFA\x53\xFA\x58\xFA\x59\xFA\x5A";
      # IBMŠg’£•¶Žš‚Ì‚¤‚¿ANEC“ÁŽê•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš
   $necIBM = "\x87\x54-\x87\x5D\x87\x8A\x87\x82\x87\x84";
      # NEC“ÁŽê•¶Žš‚Ì‚¤‚¿AIBMŠg’£•¶Žš‚ɏd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš

# (5) $necibmIBM -> $ibmNECIBM (13‘Î)
   $necibmIBM = "\xEE\xEF-\xEE\xF8\xEE\xFA\xEE\xFB\xEE\xFC";
      # NEC‘I’èIBMŠg’£•¶Žš‚Ì‚¤‚¿AIBMŠg’£•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš
   $ibmNECIBM = "\xFA\x40-\xFA\x49\xFA\x55\xFA\x56\xFA\x57";
      # IBMŠg’£•¶Žš‚Ì‚¤‚¿ANEC‘I’èIBMŠg’£•¶Žš‚ɏd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš

# (6) $necibmCJK -> $ibmCJK (360‘Î)
   $necibmCJK = "\xED\x40-\xEE\xEC";
      # NEC‘I’èIBMŠg’£•¶Žš’†‚ÌŠ¿Žš
   $ibmCJK    = "\xFA\x5C-\xFC\x4B";
      # IBMŠg’£•¶Žš’†‚ÌŠ¿Žš

use ShiftJIS::String qw(trclosure);

# •ÏŠ·—pƒNƒ[ƒWƒƒ‚̐¶¬
$correctCP932 = trclosure(
    $necJIS.$necibmJIS.$ibmJIS.$ibmNEC.$necibmIBM.$necibmCJK, # from
    $jisNEC.$jisNECIBM.$jisIBM.$necIBM.$ibmNECIBM.$ibmCJK     # to
);

$result = $correctCP932->($source); # $source ‚ð•ÏŠ·‚µ‚Ä $result ‚𓾂é

•¶Žš”‚𐔂¦‚é
Shift-JIS•¶Žš—ñ‚Ì•¶Žš”‚𐔂¦‚é‚ɂ́Aƒ}ƒbƒ`‰‰ŽZŽq‚ð—˜—p‚·‚é‚È‚çƒXƒJƒ‰[ƒRƒ“ƒeƒLƒXƒg‚Ő”‚¦‚½•û‚ªŽáŠ±‘¬‚©‚Á‚½‚Å‚·B‚»‚ê‚æ‚èA’uŠ·‰‰ŽZŽq‚ð—˜—p‚µ‚½‚Ù‚¤‚ª‘¬‚­‘‚¯‚é‚Æ‚í‚©‚è‚Ü‚µ‚½B
‚à‚Á‚Æ‚àXS‚ŏ‘‚¢‚½‚Ù‚¤‚ª‚¸‚Á‚Æ‘¬‚©‚Á‚½‚Å‚·B‚Ü‚ AXSUB‚Í–³—‚É—˜—p‚µ‚È‚­‚Ä‚à‚æ‚¢‚Å‚µ‚傤B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
use Benchmark;

$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
$s = "Š¿Žš‚ \0A±CƒeƒXƒg -";

timethese (100000, {
  le => q{
    ($str = $s) =~ s/$char/0/go;
    $le = length $str;
  },
  sg => q{
    $sg = ($str = $s) =~ s/$char//go;
  },
  ab => q{
    $ab = 0;
    $ab++ while $s =~ /[^\x81-\x9F\xE0-\xFC]|../g;
  },
  ar => q{
    $ar = @{[ $s =~ /$char/go ]};
  },
  gr => q{
    $gr = grep defined, $s =~ /$char/go;
  },
  wh => q{
    $wh = 0;
    $wh++ while $s =~ /$char/go;
  },
  sj => q{
    $sj = sjslen($s);
  },
  xs => q{
    $xs = sjlength($s);
  },
});

sub sjslen {
  my($str,$len,$i,$c,$blen);
  $str = shift;
  $blen = length $str;
  while ($i < $blen) {
    $c = vec($str, $i, 8);
    if (0x81 <= $c && $c <= 0x9F || 0xE0 <= $c && $c <= 0xFC){ $i++ }
    $i++,$len++;
  }
  $len;
}

Œ‹‰Ê 
Benchmark: timing 100000 iterations of ab, ar, gr, le, sg, sj, wh, xs...
    ab:  4 wallclock secs ( 3.46 usr +  0.00 sys =  3.46 CPU) @ 28901.73/s
    ar:  6 wallclock secs ( 5.98 usr +  0.00 sys =  5.98 CPU) @ 16722.41/s
    gr:  6 wallclock secs ( 5.50 usr +  0.00 sys =  5.50 CPU) @ 18181.82/s
    le:  3 wallclock secs ( 2.09 usr +  0.00 sys =  2.09 CPU) @ 47846.89/s
    sg:  2 wallclock secs ( 1.92 usr +  0.00 sys =  1.92 CPU) @ 52083.33/s
    sj:  9 wallclock secs ( 8.57 usr +  0.00 sys =  8.57 CPU) @ 11668.61/s
    wh:  5 wallclock secs ( 4.78 usr +  0.00 sys =  4.78 CPU) @ 20920.50/s
    xs:  1 wallclock secs ( 0.38 usr +  0.00 sys =  0.38 CPU) @ 263157.89/s
        (warning: too few iterations for a reliable count)

XSUB 
int
sjlength(arg)
    SV* arg
  PROTOTYPE: $
  PREINIT:
    unsigned char *str, *p, *e;
    STRLEN byte, len = 0;
  CODE:
    p = str = (unsigned char *)SvPV(arg, byte);
    e = str + byte;
    while (p < e) {
        if (0x81 <= *p && *p <= 0x9F || 0xE0 <= *p && *p <= 0xFC)
            ++p;
        ++p, ++len;
    }
    RETVAL = len;
  OUTPUT:
    RETVAL

•¶Žš’PˆÊ‚É•ª‚¯‚é
Shift-JIS•¶Žš—ñ‚𕶎š’PˆÊ‚É•ªŠ„‚µ‚Ü‚µ‚傤B‚±‚̏ꍇ‚́AXS‚ð—˜—p‚µ‚Ä‚à‚ ‚܂葬‚­‚È‚è‚Ü‚¹‚ñ‚Å‚µ‚½B•Ô‚è’l‚̃ŠƒXƒg‚ð—pˆÓ‚·‚é‚Ì‚ÉŽžŠÔ‚ªŽæ‚ç‚ê‚é‚Ì‚©A‚â‚Í‚èPerl‚̐³‹K•\Œ»‚̏ˆ—‚Í‚©‚Ȃ葬‚¢‚à‚Ì‚¾‚Æ‚¢‚¤‚±‚Æ‚Å‚µ‚傤B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
use Benchmark;

$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
$s = "“ú–{ŒêÆÎݺÞ\0ABC" x 100;

timethese (1000, {
   re => q{
      @re = $s =~ /$char/go;
   },
   xs => q{
      @xs = sjsplit($s);
   },
});

Œ‹‰Ê 
Benchmark: timing 1000 iterations of re, xs...
    re:  7 wallclock secs ( 6.65 usr +  0.00 sys =  6.65 CPU) @ 150.38/s
    xs:  6 wallclock secs ( 5.33 usr +  0.00 sys =  5.33 CPU) @ 187.62/s

XSUB 
void
sjsplit(arg)
    SV* arg
  PROTOTYPE: $
  PREINIT:
    unsigned char *str, *p, *e;
    STRLEN ch, byte, len = 0;
  PPCODE:
    str = (unsigned char *)SvPV(arg,byte);
    e = str + byte;
    for (p = str; p < e; p++) {
        if (0x81 <= *p && *p <= 0x9F || 0xE0 <= *p && *p <= 0xFC) ++p;
        ++len;
    }
    EXTEND(SP,len);
    for (p = str; p < e; p += ch) {
        ch = (0x81 <= *p && *p <= 0x9F || 0xE0 < *p && *p <= 0xFC) ? 2 : 1;
        PUSHs(sv_2mortal(newSVpv(p,ch)));
    }

FX‚È•ªŠ„
•¶Žš‚Å•ªŠ„‚Å‚Ý‚½‚悤‚ɁA•¶Žš—ñ‚𕪊„‚·‚é‚ɂ́Am//g‚ª•Ö—˜‚Å‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
$onebyte = '[\x00-\x7F\xA1-\xDF]';
$twobyte = '(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'; 
$char    = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';

#‚PƒoƒCƒg•¶Žš‚̉ò‚Æ‚QƒoƒCƒg•¶Žš‚̉ò‚É•ª‚¯‚éB
   while ($str =~ /\G($onebyte*)($twobyte*)/g) {
      push @one, $1 if $1 ne '';
      push @two, $2 if $2 ne '';
   }

#‹å“_‚ªÅŒã‚Ì•¶Žš‚Æ‚È‚é‚悤‚É•ªŠ„‚·‚éB
# 'B' ‚Å‚Í‚¢‚¢‚ªA•¶Žš‚É‚æ‚Á‚Ä‚Í’ˆÓ‚ª•K—vB
   @sentences = $str =~ /\G$char*?(?:B|D|$)/g; 

“Á’è‚Ì’·‚³‚Ő؂肻‚낦‚é
’·‚¢•¶Žš—ñ‚ð“Á’è‚Ì’·‚³iƒoƒCƒg’·j‚Ő؂肻‚낦‚é‚È‚çAŽŸ‚̂悤‚É‚µ‚Ä‚Å‚«‚Ü‚·B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';

$str = '‚í‚´‚í‚´EUC-JP‚É•ÏŠ·‚µ‚È‚¢‚ŁAShift-JIS‚̂܂܏ˆ—'.
       '‚Å‚«‚½‚ç‚¢‚¢‚ñ‚¾‚¯‚ǁA‚È‚©‚È‚©–Ê“|‚¾‚Ë‚¦B';

print join "\n", bytebreak($str,15);

sub bytebreak{
   my($byte,$bmax,$ch,@lines);
   my $str = shift;
   $byte = $bmax = shift;
   foreach $ch ($str =~ /$char/go) {
      $byte += length $ch;  # ŽŸ‚Ì•¶Žš‚ðŒp‚¬‘«‚µ‚½’·‚³
      if ($byte <= $bmax) {
         $lines[-1] .= $ch; # ’·‚·‚¬‚È‚¯‚ê‚ÎŒp‚¬‘«‚·
      } else {
         $byte = length $ch;
         push @lines, $ch;  # ‚³‚à‚È‚¯‚ê‚ÎŽŸ‚̍s‚Ö
      }
   }
   return @lines;
  # ’·‚³‚ª‘«‚ç‚È‚¢ê‡‚ɁA‰E‚ðƒXƒy[ƒX‚Å–„‚ß‚½‚¯‚ê‚΁B
  # return map {$_ .= ' ' x ($bmax - length)} @lines;
}

‹Ö‘¥ˆ—‚́A—Ⴆ‚ÎŽŸ‚̂悤‚É‚µ‚čs‚¢‚Ü‚·B’Pƒ‚ȍl‚¦•û‚ł́A‹Ö‘¥ˆ—‚́A(i) s“ª‹Ö‘¥•¶Žš‚Ì’¼‘O‚ʼnüs‚µ‚È‚¢G(ii) s––‹Ö‘¥•¶Žš‚Ì’¼Œã‚ʼnüs‚µ‚È‚¢G‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B‚Ü‚½A"(a)"‚̂悤‚ɁAs––‹Ö‘¥•¶Žš‚ƍs“ª‹Ö‘¥•¶Žš‚ÌŠÔ‚É‚P•¶Žš‚µ‚©‚È‚¢˜A‘±‚µ‚½•”•ª‚́A‚»‚Ì•”•ª‚Ì‘S‘Ì‚ª–³‰üs‚É‚È‚é“_‚É‚à”z—¶‚µ‚Ü‚·B
‚±‚Ì—á‚Å‚Í•¶Žš—ñ‚Ì’·‚³‚ðƒoƒCƒg’· length ‚Å‹K’肵‚Ä‚¢‚Ü‚·‚ªA•¶Žš•‚ƃoƒCƒg”‚Í•K‚¸‚µ‚à”ä—Ⴕ‚Ü‚¹‚ñ‚̂ŁAê‡‚É‚æ‚Á‚ẮiƒMƒŠƒVƒA•¶Žš‚Í”¼Šp•‚É‚µ‚½‚¢‚Æ‚©A‚Ü‚½‚̓vƒƒ|[ƒVƒ‡ƒiƒ‹‚̏ꍇ‚Æ‚©AUTF-8‚̏ꍇ‚Æ‚©j•¶Žš•‚ð•Ô‚· width ‚̂悤‚Ȋ֐”‚ð’è‹`‚·‚é•K—v‚ª‚ ‚é‚Å‚µ‚傤B
‚Ü‚½A‚±‚Ì—á‚Ì‚â‚è•û‚ł́A‹Ö‘¥‚É‚æ‚é–³‰üs•”•ª‚¾‚¯‚ňês‚æ‚è’·‚­‚È‚éê‡‚́A‚Í‚Ý‚¾‚µ‚ð–h‚°‚Ü‚¹‚ñB‚»‚ꂪ¢‚é‚È‚çA‹Ö‘¥‚Ì—áŠO‚Æ‚µ‚čs‚𕪂¯‚éi—Ⴆ‚Î$next‚Ì’·‚³‚ª$bmax‚ð’´‚¦‚È‚¢‚悤‚É‚·‚éjˆ’u‚ª•K—v‚Å‚µ‚傤B
ƒTƒ“ƒvƒ‹ƒR[ƒh 
$CharRE = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';

# s“ª‹Ö‘¥•¶Žšiˆê•”•ªj
$NotAtBegin = q/)]}fhvxjnp!,.:;?ABXJKICDFGH/;
# s––‹Ö‘¥•¶Žšiˆê•”•ªj
$NotAtEnd   = q/([{eguwimo/;

# ƒnƒbƒVƒ…‚ðì‚é
@NotAtBegin{$NotAtBegin =~ m/$CharRE/g} = ();
@NotAtEnd{  $NotAtEnd   =~ m/$CharRE/g} = ();

$Str = '‚í‚´‚í‚´EUC-JP‚É•ÏŠ·‚µ‚È‚¢‚ŁAShift-JIS‚̂܂܏ˆ—'.
       '‚Å‚«‚½‚ç‚¢‚¢‚ñ‚¾‚¯‚ǁA‚È‚©‚È‚©–Ê“|‚¾‚Ë‚¦B';

print join "\n", linebreak($Str,16);

sub linebreak{
   my($byte,$i,@chars,$next,@lines);
   my($str, $bmax, $pad) = @_;

   # $byte‚ÍŽŸ‚Ì•¶Žš‚ðŒp‚¬‘«‚µ‚½‚Æ‚«‚Ì’·‚³
   $byte = $bmax; # ‚·‚®‰üs‚Å‚«‚邽‚߂̏‰Šú’lB

   # •¶Žš’PˆÊ‚ɂ΂炷
   @chars = $str =~ /$CharRE/go; 

   for ($i=0; $i<@chars; $i++) {
      $next .= $chars[$i];         # ŽŸ‚Ì•¶Žš
      $byte += length $chars[$i];  # ŽŸ‚Ì•¶Žš‚ðŒp‚¬‘«‚µ‚½’·‚³

      # ŽŸ‚Ì•¶Žš‚ªs––‹Ö‘¥‚Ì‚Æ‚«
      next if $i+1 < @chars && exists $NotAtEnd{ $chars[$i] };
      # ŽŸ‚Ì•¶Žš‚ÌŽŸ‚ªs“ª‹Ö‘¥‚Ì‚Æ‚«
      next if $i+1 < @chars && exists $NotAtBegin{ $chars[$i+1] };

      # s‚̐U‚蕪‚¯
     # ’·‚·‚¬‚È‚¯‚ê‚ÎŒp‚¬‘«‚·
      if ($byte <= $bmax) {
         $lines[-1] .= $next;
      }
     # ‚³‚à‚È‚¯‚ê‚ÎŽŸ‚̍s‚Ö
      else {
         push @lines, $next;
         $byte = length $next;# V‚µ‚¢s‚Ì’·‚³
      }
      $next = '';
   }
   return defined $pad && 1 == length $pad # ‹l‚ß•¨
    ? map {$_ .= $pad x ($bmax - length)} @lines
    : @lines;
}

‚Ԃ牺‚ª‚è‹Ö‘¥‚̏ꍇi$bmin ‚©‚ç $bmax‚Ì”ÍˆÍ‚ð‹–‚·jB 
      $bmin = $bmax - 2; # —Ⴆ‚΁B

      # s‚̐U‚蕪‚¯
     # ’·‚·‚¬‚È‚¯‚ê‚ÎŒp‚¬‘«‚·
      if ($byte <= $bmax && @lines && length $lines[-1] < $bmin){
         $lines[-1] .= $next;
      }
     # ‚³‚à‚È‚¯‚ê‚ÎŽŸ‚̍s‚Ö
      else {
         push @lines, $next;
         $byte = length $next;# V‚µ‚¢s‚Ì’·‚³
      }

“ú–{Œê•¶Žš—ñ‚ð•À‚Ñ‘Ö‚¦‚é
‰¼–¼•¶Žš—ñ‚ðŒÜ\‰¹‡‚Ƀ\[ƒg‚·‚郂ƒWƒ…[ƒ‹‚Æ‚µ‚āAShiftJIS/Collate.pm ‚ª‚ ‚è‚Ü‚·B“üŽè‚ÆŽg‚¢•û‚ÍPerl‚̃y[ƒW‚É–ß‚ê‚ÎŒ©‚‚©‚è‚Ü‚·B
u“ǂ݁E•\‹LÆ‡v‚ÍŽŸ‚̂悤‚É‚µ‚čs‚¢‚Ü‚·BsortYomiƒƒ\ƒbƒh‚̎󂯎æ‚郊ƒXƒg‚ÌŠe—v‘f‚́A[ •\‹L—ñ, “Ç‚Ý—ñ ]‚Æ‚¢‚¤”z—ñƒŠƒtƒ@ƒŒƒ“ƒX‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
ƒTƒ“ƒvƒ‹ƒR[ƒh 
use ShiftJIS::Collate;

my @data = (
  [qw/ ¬ŽR ‚±‚â‚Ü /],
  [qw/ ’·“c ‚È‚ª‚½ /],
  [qw/ “c’† ‚½‚È‚© /],
  [qw/ —é–Ø ‚·‚¸‚« /],
  [qw/ ¬“ˆ ‚±‚¶‚Ü /],
  [qw/ Ž™“‡ ‚±‚¶‚Ü /],
  [qw/ ¬ŽR ‚¨‚â‚Ü /],
  [qw/ ¬“‡ ‚±‚¶‚Ü /],
  [qw/ ¬“‡ ‚±‚¶‚Ü /],
  [qw/ ŽR“c ‚â‚Ü‚¾ /],
  [qw/ ‰i“c ‚È‚ª‚½ /],
);

@sort = ShiftJIS::Collate->new()->sortYomi(@data);

uŠÈˆÕ‘ã•\“ǂݏƍ‡v‚ÍŽŸ‚̂悤‚É‚µ‚čs‚¢‚Ü‚·BsortDaihyoƒƒ\ƒbƒh‚̎󂯎æ‚郊ƒXƒg‚ÌŠe—v‘f‚́A[ •\‹L—ñ, “Ç‚Ý—ñ ]‚Æ‚¢‚¤”z—ñƒŠƒtƒ@ƒŒƒ“ƒX‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
ƒTƒ“ƒvƒ‹ƒR[ƒh 

#!perl
use ShiftJIS::Collate;

my @data = (
  [qw/ ƒÉŒvŽZ   ‚ç‚Þ‚¾‚¯‚¢‚³‚ñ /],
  [qw/ JIS”ԍ†  ‚¶‚·‚΂ñ‚²‚¤   /],
  [qw/ ˆÀ’B     ‚ ‚¾‚¿         /],
  [qw/ ˆÀ“¡     ‚ ‚ñ‚Ç‚¤       /],
  [qw/ ‰Í¼     ‚©‚³‚¢         /],
  [qw/ ‰Í“à     ‚©‚í‚¿         /],
  [qw/ Šp“c     ‚©‚­‚½         /],
  [qw/ Šp“c     ‚©‚Ç‚½         /],
  [qw/ ”@ŒŽ     ‚«‚³‚炬       /],
  [qw/ ‰Í“à     ‚±‚¤‚¿         /],
  [qw/ KŽR     ‚±‚¤‚â‚Ü       /],
  [qw/ KŽR     ‚³‚«‚â‚Ü       /],
  [qw/ ²“¡     ‚³‚Æ‚¤         /],
  [qw/ ²˜a“c   ‚³‚킾         /],
  [qw/ ‘ò“‡     ‚³‚킵‚Ü       /],
  [qw/ ‘ò“c     ‚³‚킾         /],
  [qw/ àV“c     ‚³‚킾         /],
  [qw/ Šp“c     ‚‚̂¾         /],
  [qw/ ’Æˆä     ‚‚¿‚¢         /],
  [qw/ “yˆä     ‚‚¿‚¢         /],
  [qw/ “y‹     ‚‚¿‚¢         /],
  [qw/ ŒËˆä     ‚Æ‚¢           /],
  [qw/ ŒË“c     ‚Æ‚¾           /],
  [qw/ “yˆä     ‚Ç‚¢           /],
  [qw/ “y‹     ‚Ç‚¢           /],
  [qw/ “yŠò     ‚Æ‚«           /],
  [qw/ ˆÀ“c     ‚â‚·‚¾         /],
);

@sort = ShiftJIS::Collate->new()->sortDaihyo(@data);


Shift-JIS‚ÌŠ¿Žš‚ðŠÜ‚Þƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼
–{€–ڂ́A‘¼‚̍€–Ú‚É‘‚µ‚āAŒŸ“¢•s[•ª‚Ì‚Ü‚Ü‹Lq‚µ‚Ä‚¢‚Ü‚·‚̂ŁA‚à‚µ‰½‚©ŽQl‚É‚µ‚悤‚ÆŽv‚Á‚½ê‡A\•ª‚É’ˆÓ‚̏ãA”[“¾‚Å‚«‚é‚Ü‚Å‚²Ž©•ª‚̍ì‹ÆŠÂ‹«‚ŃeƒXƒg‚µ‚Ä‚­‚¾‚³‚¢B
Windows (95/98/NT/2000‚È‚Ç) ‚ŁAƒtƒ@ƒCƒ‹–¼‚âƒpƒX–¼‚ªŠ¿Žši‚±‚±‚Å‚Í“ñƒoƒCƒg•¶Žš‚̈Ӗ¡‚ÅŽg‚Á‚Ä‚¢‚Ü‚·‚̂ŁA•½‰¼–¼‚â‹L†‚È‚Ç‚àŠÜ‚Ý‚Ü‚·Bj‚ðŠÜ‚ޏꍇAPerl‚ňµ‚¤Û‚É–â‘肪¶‚¶‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B
––”öƒoƒCƒg‚ª "\x5C" ‚ÌŠ¿Žš‚ð‚à‚ƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼
ƒfƒBƒŒƒNƒgƒŠ‘€ìŠÖ”imkdir, rmdir, opendir, -d ‚ȂǁjAƒtƒ@ƒCƒ‹‘€ìŠÖ”iopen, unlink, -f ‚Ȃǁj‚ŁAƒAƒNƒZƒX‚Å‚«‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B
ƒtƒ@ƒCƒ‹‚̏ꍇ‚́A––”ö‚É”¼ŠpƒXƒy[ƒX‚ð“Y‚¦‚é‚ƃAƒNƒZƒX‚Å‚«‚éê‡‚ª‚ ‚è‚Ü‚·i—Ⴆ‚΁A-f '•\ ' ‚Ü‚½‚Í -f "\x95\x5C\x20" ‚ȂǁjB
ƒfƒBƒŒƒNƒgƒŠ‚̏ꍇ‚́A––”ö‚É / ‚© \ ‚ð“Y‚¦‚é‚ƃAƒNƒZƒX‚Å‚«‚éê‡‚ª‚ ‚è‚Ü‚·i—Ⴆ‚΁A-d '•\/' ‚Ü‚½‚Í -d "\x95\x5C/" ‚ȂǁjB––”ö‚É“Y‚¦‚镶Žš‚𔼊pƒXƒy[ƒX‚Æ‚µ‚Ä‚àA‚¤‚Ü‚­ƒAƒNƒZƒX‚Å‚«‚éê‡‚ª‚ ‚è‚Ü‚·B“Y‚¦‚镶Žš‚ÌŒó•â‚Æ‚µ‚āAŽOŽí—Þ‚Ì•¶ŽšiƒXƒ‰ƒbƒVƒ…A‰~‹L†A‹ó”’j‚ð‹“‚°‚Ü‚µ‚½‚ªA‚Ç‚Ì•¶Žš‚ª‚æ‚¢‚©‚́AŠÖ”‚É‚æ‚Á‚ĈقȂéê‡‚ª‚ ‚é‚悤‚Å‚·BŽg—p‚·‚é‘O‚ɏ\•ª‚ɃeƒXƒg‚µ‚Ä‚­‚¾‚³‚¢B
‚È‚¨AƒfƒBƒŒƒNƒgƒŠ–¼‚Ì––”ö‚É / ‚© \ ‚ð“Y‚¦‚éê‡A‚à‚Æ‚à‚Æ––”ö‚É / ‚© \ ‚ª•t‚¢‚Ä‚¢‚éê‡‚ɂ́A“ñd‚É•t‚¯‚é‚Æ‚¤‚Ü‚­s‚©‚È‚¢‚¨‚»‚ꂪ‚ ‚è‚Ü‚·‚̂ŁA•¶Žš—ñ˜AŒ‹‚Ì‘O‚ÉŒŸ¸‚µ‚½‚Ù‚¤‚ª‚æ‚¢‚Å‚µ‚傤B
‚Ç‚¤‚µ‚Ä‚à‹““®‚ª•s–¾‚ŐM—Š‚Å‚«‚È‚¢ê‡‚́A`` ‚Ü‚½‚Í qx// ‚â system()ŠÖ”‚È‚Ç‚ð’Ê‚¶‚ÄWindows‚̃Rƒ}ƒ“ƒh‚ðŒÄ‚Ô‚Ì‚ª—Ç‚¢‚ÆŽv‚¢‚Ü‚·B
‚¨‚Ü‚¯
 Shift-JIS ‚ŏ‘‚©‚ꂽ POD ‚ð Perl 5.8.1, 5.8.2 ‚Ì Pod::Html ‚Å HTML ‚É•ÏŠ·‚µ‚½ê‡AƒAƒ“ƒJ[‚Ì–¼‘O‚́A ‰p”Žš‚Ɖ¼–¼•¶Žš [0xA6..0xDF] ‚ðœ‚«A ‘¼‚ÌŠeƒoƒCƒg‚͉ºüi'_'j‚É•ÏŠ·‚³‚ê‚é‚悤‚Å‚·B ‹ï‘Ì“I‚ɂ́Ause locale; ‰º‚ŁAlc ‚Æ s/\W/_/g ‚ðŽÀs‚µ‚½Œ‹‰Ê (cf. Pod::Html::anchorify) ‚É‚È‚è‚Ü‚·B 
[2003-11-18]
Perl‚̃y[ƒW