Shift-JISƒeƒLƒXƒg‚𳂵‚ˆµ‚¤
Å‹ß‚ÌXV—š—ð
2005-03-26: uʼn‚Év’†AXML“ú–{Œêƒvƒƒtƒ@ƒCƒ‹‘æ2”Å‚ÉŠî‚«AŽáŠ±’Ç‹LB
2005-03-09: uʼn‚Év’†A•¶Í‚ðŽáŠ±C³B
2003-06-24: Shift-JIS‚ÌŠ¿Žš‚ðŠÜ‚Þƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼
2003-05-31: uʼn‚Év’†AuƒVƒtƒgJISv‚È‚Ç‚Ì•\‹L‚ɂ‚¢‚ÄB
2003-05-24: CP932d•¡’è‹`•¶Žš‚Ì•ÏŠ·
2002-08-30: Perl 5.8.0 ‚ɂ‚¢‚ÄB
2002-01-17: ’·‚¢•¶Žš—ñ‚ɑ΂·‚鳋K•\Œ»ŒŸõ
2001-12-15: ShiftJIS::Collate ‚ª overrideCJK ƒpƒ‰ƒ[ƒ^‚ð”pŽ~‚µ‚½‚±‚Æ‚É”º‚¤ “ú–{Œê•¶Žš—ñ‚ð•À‚Ñ‘Ö‚¦‚é‚Ì‘‚«Š·‚¦B
ʼn‚É
‚ ‚肪‚¿‚ȃGƒ‰[
ƒGƒ‰[‚âŠÔˆá‚¢‚ð–h‚®‘Îô
•¶Žš—ñƒŠƒeƒ‰ƒ‹‚Ìì‚è•û
³‹K•\Œ»‚ƃ}ƒbƒ`
ƒOƒ[ƒoƒ‹ƒ}ƒbƒ`
ƒAƒ‹ƒtƒ@ƒxƒbƒg‚̑啶Žš‚Ƭ•¶Žš
’·‚¢•¶Žš—ñ‚ɑ΂·‚鳋K•\Œ»ŒŸõ
ŠOŽš‚Ì•ÏŠ·
CP932d•¡’è‹`•¶Žš‚Ì•ÏŠ·
•¶Žš”‚𔂦‚é
•¶Žš’PˆÊ‚É•ªŠ„‚·‚é
‚¢‚ë‚¢‚ë‚È•ªŠ„
“Á’è‚Ì’·‚³‚ÅØ‚è‚»‚낦‚é
“ú–{Œê•¶Žš—ñ‚ð•À‚Ñ‘Ö‚¦‚é
Shift-JIS‚ÌŠ¿Žš‚ðŠÜ‚Þƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼
ʼn‚É
“ú–{Œê‚Ì•¶ŽšƒR[ƒh‚É‚Í‚¢‚‚‚©‚Ì‚à‚Ì‚ªŽg‚í‚ê‚Ä‚¢‚Ü‚·B‚ ‚é’ö“xˆê”Ê“I‚È‚à‚Ì‚È‚çA‚Ç‚ê‚ðŽg‚Á‚Ä‚à‚æ‚¢‚Å‚µ‚傤i‚Ç‚Ì•¶ŽšƒR[ƒh‚Å•„†‰»‚³‚ê‚Ä‚¢‚é‚©‚Ìî•ñ‚ªŽ¸‚í‚ꂳ‚¦‚µ‚È‚¯‚ê‚ÎjB
—Ⴆ‚ÎA“ú–{Œê”ÅWindows‚Å‚ÍAƒƒ‚’ ‚Å‚àDOS‘‹‚Å‚àShift-JIS‚ªŽg‚í‚ê‚Ä‚¢‚Ü‚·B‚±‚¤‚¢‚¤ê‡Aˆ—‚Ì“r’†‚Å‚í‚´‚í‚´EUC-JP‚âUTF-8‚É•ÏŠ·‚·‚é‚Æ‚µ‚½‚ç–Ê“|‚Å‚·BƒfƒoƒbƒO‚Ì‚Æ‚«Au‚±‚Ì’iŠK‚Å‚Í‚±‚Ì•Ï”‚ɂ͉½‚ª“ü‚Á‚Ä‚¢‚é‚Ì‚©vo—Í‚µ‚Ä“_ŒŸ‚·‚é‚Ì‚Í‚æ‚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‚Ì•‘®‘1iƒVƒtƒg•„†‰»•\Œ»j‚É‚ÍAuŽQlv‚Æ‚µ‚Äu‚±‚Ì•„†‰»•\Œ»‚Í’ÊígƒVƒtƒgJISƒR[ƒhh‚ƌĂ΂ê‚Ä‚¢‚év‚Ì‹Lq‚ª‚ ‚è‚Ü‚·B
IANA ‚Ì CHARACTER SETS ‚É‚ÍAShift_JIS ‚Æ Windows-31J ‚Æ‚ª•Ê‚É“o˜^‚³‚ê‚Ä‚¢‚Ü‚·B‚Ü‚½AShift_JIS‚ɂ‚¢‚ÄAuCCSi•„†‰»•¶ŽšW‡j‚ÍJIS X0201:1997‚ÆJIS X0208:1997‚Å‚ ‚èAŠ®‘S‚È’è‹`‚ÍJIS X 0208:1997‚Ì•‘®‘1‚ÉŽ¦‚³‚ê‚Ä‚¢‚éBv‚Æ‹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‚Å '‚ ' ‚Æ‚¢‚¤•¶Žš‚ÍA16i”‚Å82 A0‚Æ‚¢‚¤‚QƒoƒCƒg‚Å•\‚³‚ê‚Ü‚·B‚±‚ê‚ð "\x82\xA0" ‚Æ‘‚¢‚Ä‚àperl‚É‚Æ‚Á‚Ä‚Í“¯‚¶‚Å‚·B‚±‚ꂪ“ú–{‚Ìicountryj“ú–{Œê‚Ìilanguagej•¶Žš‚Å‚ ‚é‚Æ‚©AShift-JIS‚Å‘‚©‚ê‚Ä‚¢‚éicharsetj‚Æ‚©‚¢‚¤î•ñ‚Í‚Ç‚±‚É‚àŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚¹‚ñB
‚»‚Ì‚½‚ßAShift-JIS‚Å‘‚«‚½‚¢‚Æ‚«‚É‚ÍAperl‚ÌŒë‰ð‚ðŽó‚¯‚È‚¢‚悤‚É‘‚¢‚Ä‚â‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚»‚Ì”z—¶‚ÍAƒvƒƒOƒ‰ƒ}‚ª‚µ‚Ä‚â‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚±‚Ì•¶‘‚Ì‹Lq‚ÍA‚»‚̂悤‚ÈŽèŠÔ‚ð‚©‚¯‚Ä‚àAShift-JIS‚ð—p‚¢‚邱‚ƂɈӋ`‚ª‚ ‚é‚Æl‚¦‚Ä‚¢‚él‚É‚ÍŽQl‚É‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
‚»‚ñ‚ÈŽèŠÔ‚ðŠ|‚¯‚½‚‚È‚¢l‚ÍA
Perl 5.8.xˆÈ~‚ðŽg‚¤B
—˜“_Fperl5-porters@perl.org ‚ŃTƒ|[ƒg‚³‚ê‚Ä‚¢‚éB
Œ‡“_F“Æ“Á‚Ìl‚¦•û‚ª‚ ‚èA]—ˆ‚Ì“ú–{Œêˆ—‚Æ‚Í‘Š—e‚ê‚È‚¢‚Æ‚±‚낪‚ ‚éi‚à‚Á‚Æ‚àA‚»‚Ì‚¤‚¿Šµ‚ê‚Ä‹C‚É‚È‚ç‚È‚‚È‚é‚©‚à‚µ‚ê‚È‚¢jB
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‚Á‚½‚Æ‚«‚É‚ ‚肪‚¿‚ÈiHjƒGƒ‰[
Shift-JIS‚É‚ÍA‘æ‚QƒoƒCƒg‚ª [@-~]iASCII 10i”‚Å64-126j‚͈̔͂ɓü‚é‚à‚Ì‚ª‚ ‚è‚Ü‚·B‚±‚ê‚ç‚ÌASCII•¶Žš‚ÍAperl‚É‚Æ‚Á‚Ä“Á•Ê‚ȈӖ¡‚ð‚à‚‚±‚Æ‚ª‚ ‚邽‚ßA‚µ‚΂µ‚΃Gƒ‰[‚ÌŒ´ˆö‚Æ‚È‚è‚Ü‚·BShift-JIS‚Å‚ÍA‚QƒoƒCƒg•¶Žš‚Ì‘æ‚QƒoƒCƒg‚ÍA[\x40-\x7E\x80-\xFC])‚͈̔͂ɂ ‚邽‚ßAŽÀ‚É188•ª‚Ì63A–ñ‚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‚Pj
—Ⴆ‚Î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ŽŸ—ájB
ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Qj
—Ⴆ‚Î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’[EI’[•¶Žš‚ð‰½‚É‚µ‚Ä‚à“¯‚¶‚±‚Æ‚Å‚·B
ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Rj
—Ⴆ‚Î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‚Sj
—Ⴆ‚ÎA"ˆø”@ARGV" ‚Æ‚¢‚¤ƒŠƒeƒ‰ƒ‹‚ª•¶Žš‰»‚¯‚ð‹N‚±‚µ‚Ü‚·B‚±‚ê‚ÍA"@"i‘SŠpƒXƒy[ƒXj‚Ì‘æ‚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ÆjB
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ÆjB
"Œ¢@\dog" ‚Æ‚·‚ê‚΂¢‚¢‚Æ‚¢‚¤ˆÓŒ©‚à‚ ‚è‚Ü‚·‚ªA\d ‚ªƒƒ^•¶Žš‚Æ‚µ‚Ä“Á•ÊˆÓ–¡‚ª‚È‚¢‚½‚ß‚É‚¤‚Ü‚‚¢‚‚Ì‚Å‚ ‚Á‚ÄiPerl 5.6ˆÈ~‚Å‚ÍAŒx Unrecognized escape \d passed through u”FŽ¯‚Å‚«‚È‚¢ƒGƒXƒP[ƒv \d ‚ª“n‚³‚ꂽv‚ðˆø‚«‹N‚±‚µ‚Ü‚·jA—Ⴆ‚Î "‰Ô@\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.1iActivePerl 626jˆÈ~‚Å‚ÍA’è‹`‚³‚ê‚Ä‚¢‚È‚¢”z—ñ‚Å‚à–Ù‚Á‚Ä“WŠJ‚µ‚Ü‚·B”z—ñ @dog ‚ª“WŠJ‚³‚ê‚é‚Ì‚ÅA"Œ¢\x81" ‚Æ“¯‚¶‚É‚È‚è‚Ü‚·B
‚±‚ê‚̓Gƒ‰[‚Å‚Í‚È‚AŒx‚É‚È‚è‚Ü‚·B
Can't find string terminator '"' anywhere before EOF
uI’[•¶Žš '"'‚ªƒ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—‡‚ÌŒêviƒNƒI[ƒg‚ň͂܂ê‚Ä‚¢‚È‚¢•¶Žš—ñj‚ª‚ ‚é‚悤‚É‚Ý‚ÄA‚±‚±‚É‚Í—‡‚ÌŒê‚Å‚Í‚È‚A‰‰ŽZŽq‚ª‚ ‚é‚ׂ«‚Å‚Í‚È‚¢‚©H‚Æperl‚Íl‚¦‚Ü‚·B
Unrecognized character \x82
u”FŽ¯‚³‚ê‚È‚¢•¶Žš \x82v
‚±‚ê‚Í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‚Pj
"ƒ„ƒJƒ“" =~ /ƒ|ƒbƒg/ ‚̓}ƒbƒ`‚µ‚Ü‚·B‚»‚ê‚ÍA'ƒ|' ‚Ì‘æ“ñƒoƒCƒg‚ª | ‚È‚Ì‚ÅA/ƒ|ƒbƒg/ ‚Í /\x83|ƒbƒg/ ‚Æ‚Ý‚È‚³‚êA\x83 ‚¾‚¯ƒ}ƒbƒ`‚·‚ê‚΂悢‚©‚ç‚Å‚·B
ƒ}ƒbƒ`‚µ‚È‚¢‚Í‚¸‚Ȃ̂Ƀ}ƒbƒ`‚·‚éi‚Qj
"Œ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‚Pj
"‰^“]–Æ‹–" =~ /‰^“]/ ‚̓}ƒ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‚Tj
—Ⴆ‚Î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‚È‚Ç‚Æ‚¢‚¤–Ê“|‚È‚±‚Æ‚ª‹ê‚É‚È‚ç‚È‚¢lA•¶Žšƒ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‚É‘ã“ü‚·‚éˆÈ‘OAƒ_ƒuƒ‹ƒNƒH[ƒg‚ň͂ñ‚¾Žž“_‚Å‚·‚Å‚É•¶Žš‰»‚¯‚µ‚Ä‚¢‚é‚Æl‚¦‚é‚ׂ«‚Å‚·B‚·‚Å‚É•¶Žš‰»‚¯‚µ‚½ƒf[ƒ^‚ð‘ã“ü‚µ‚ÄAD‚¢Œ‹‰Ê‚ª“¾‚ç‚ê‚é‚Í‚¸‚ª‚ ‚è‚Ü‚¹‚ñB
ƒqƒAƒhƒLƒ…ƒƒ“ƒg‚͈À‘S«‚Ì‚‚¢‰ðŒˆ–@‚Å‚·B‚½‚¾‚µAI’[•¶Žš—ñ‚ðƒ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‚½‚¾AI’[•¶Žš—ñ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•¶Žš‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚é‚Ì‚Í\‚í‚È‚¢jA‚¨‚æ‚у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‚±‚ê‚ÍAiŒ»ó‚Å‚Í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‚½‚Ô‚ñjB
‚»‚Ì‚½‚ß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‚±‚Ì–â‘è‚ÍŒãqj
ã‚̂悤‚È‘‚«•û‚ÍŠm‚©‚ÉX‚¢‚Å‚·‚ËBƒNƒI[ƒg‚Ì’†‚Å \Q \E ‚ðŽg‚¤Žž‚ÍA³‚µ‚¢•¶Žš—ñ‚ª“ü‚Á‚Ä‚¢‚é•Ï”‚ƈê‚É‚È‚ç–â‘肪‹N‚±‚è‚Ü‚¹‚ñB‚±‚¤‚·‚邱‚Æ‚ÅA\Q \E ‚͈̔͂ª–¾Šm‚É‚È‚é‚©‚ç‚Å‚·B³‚µ‚¢•¶Žš—ñ‚Ìì‚è•û‚ÍA‘Oq‚̃Šƒeƒ‰ƒ‹‚Ìì‚è‚©‚½‚ðŽQl‚É‚µ‚ĉº‚³‚¢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Špj
$upper = '(?:[A-Z]|\x82[\x60-\x79])'; # ƒAƒ‹ƒtƒ@ƒxƒbƒg‘啶Žši”¼Šp‚Æ‘SŠpj
$lower = '(?:[a-z]|\x82[\x81-\x9A])'; # ƒAƒ‹ƒtƒ@ƒxƒbƒg¬•¶Žši”¼Šp‚Æ‘SŠpj
$space = '(?:[\ \n\r\t\f]|\x81\x40)'; # ‹ó”’•¶Žši”¼Šp‚Æ‘SŠpj
$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¡‚Í‚»‚ꂪ–â‘è‚È‚Ì‚Å‚Í‚È‚¢jB‚µ‚©‚µ‘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‹É’[‚Èꇂ͕¶Žš—ñ‚Ìʼn‚܂Ń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ƒgi‚ñ‚¾ˆÊ’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³‚µ‚¢jB
\G‚ð•t‚¯‚È‚¢ê‡
$str = 'ŽŽŽŽŽŽŽŽEŽŽŽŽŽŽŽŽE';
$pat = 'ŽE';
$str =~ s/($char*?)($pat)/${1}E/og; # 'ŽE' ‚ª‚ ‚ê‚Î 'E' ‚É’uŠ·
print $str;
# 'ŽŽŽŽŽŽŽEŽŽŽŽŽŽŽE' ‚É‚È‚Á‚Ä‚µ‚Ü‚¤i‚¨‚©‚µ‚¢jB
@@@@ŽŽŽŽŽŽŽŽ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ŽŸ‚Ì—á‚ÍAuƒAv‚Ì‘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‚È‚ºHv‚É‘‚¢‚½‚悤‚É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‚±‚ê‚łೂµ‚iHjƒ}ƒ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 substringjA‚±‚Ì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ƒ•‰‚¯É‚µ‚ÝjB
ƒ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 ‚Í–â‘è‚Æ‚È‚ç‚È‚¢jAm//i ‚â s///i‚È‚Ç‚Ì /iCüŽ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/iCüŽq‚ÍŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB
‚©‚í‚è‚ÉA•¶Žš—ñ‚ÉŠÜ‚Ü‚ê‚éƒAƒ‹ƒtƒ@ƒxƒbƒgi“ñƒ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‰ñPerluk‚Ì‚²ˆÄ“à" =~ /^$char*?PERLuK/i # ƒ}ƒbƒ`‚·‚éi¢‚éj
"‘æ‚Q‰ñPerluk‚Ì‚²ˆÄ“à" =~ /^$char*?((?i)PERL)uK/ # ƒ}ƒbƒ`‚µ‚È‚¢i—Ç‚µj
"‘æ‚R‰ñPerluK‚Ì‚²ˆÄ“à" =~ /^$char*?((?i)PERL)uK/ # ƒ}ƒbƒ`‚·‚éi—Ç‚µj
‘SŠp‚QƒoƒCƒgƒAƒ‹ƒtƒ@ƒxƒbƒg‚̃P[ƒX–³Ž‹‚ÍA‘I‘ð‚É‚æ‚èŽÀŒ»‚Å‚«‚Ü‚·i‚ªA‚â‚Á‚Ï‚è•ÏjB'‚`'‚Ì‘æ‚QƒoƒCƒg‚ª '`' ‚È‚Ì‚àA‚¿‚å‚Á‚Æ’ˆÓ‚Å‚·im`` ‚È‚Ç‚Ì‚Æ‚«’v–½“IƒGƒ‰[‚É‚È‚éB‚½‚¾‚µƒoƒbƒNƒNƒH[ƒg‚ðŽg‚¤ˆÓ–¡‚Í“Á‚É‚È‚¢jBŒ´‘¥“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‚kuK");
print "‘æ‚T‰ñ‚o‚…‚’‚ŒuK‰ï" =~ /^$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‚ÍAu‚ v‚ª10–œŽš˜A‘±‚µ‚½‚ ‚Æ‚ÉAuƒAƒCABCv‚ª˜AŒ‹‚³‚ꂽ•¶Žš—ñ‚Å‚·B‚±‚̂悤‚È•¶Žš—ñi‚½‚¾‚µAuw‚ 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 ‚¾‚ÆAu‚±‚̃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ƒgi“ñƒ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‚µ‚È‚¢‚¤‚¿‚ÉjoŒ»‚·‚ê‚ÎAƒGƒ‰[‚ɂȂ炸‚Ɉ—‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·BiŠm—¦“I‚È–â‘è‚Å‚·‚Ì‚ÅAŠ®‘S‚Å‚Í‚ ‚è‚Ü‚¹‚ñBj
ƒ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‚¨‚»‚ç‚‚Í—ÞŽ—‚µ‚½•¶Žš‚╶Žš—ñ‚É•ÏŠ·‚·‚邱‚Æ‚É‚È‚é‚Å‚µ‚傤jB‚±‚ê‚Í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•”•ª“Ij•ÏŠ·ƒ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Š®‘SIj
$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Š®‘SIj
$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;
CP932d•¡’è‹`•¶Žš‚Ì•ÏŠ·
Microsoft Windows “ú–{Œê”łňê”Ê“I‚ÉŽg—p‚³‚ê‚Ä‚¢‚éƒR[ƒhƒy[ƒW 932 (CP932) ‚Å‚ÍAŠô‚‚©‚Ì•¶Žš‚ªd•¡‚µ‚Ä’è‹`‚³‚ꂽó‘Ô‚É‚È‚Á‚Ä‚¢‚Ü‚·B‚±‚±‚ÅA•¶Žš‚ªd•¡’è‹`‚³‚ê‚Ä‚¢‚é‚Æ‚ÍAUnicode‚Ì“¯‚¶•„†ˆÊ’u‚ɑΉž•t‚¯‚ç‚ê‚Ä‚¢‚邱‚Æ‚Æ‚µ‚Ü‚·B
—Ⴆ‚ÎACP932 -> Unicode -> CP932 ‚̇‚Å•ÏŠ·‚³‚ê‚é‚ÆAd•¡’è‹`•¶Žš‚Í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’†Ad•¡’è‹`•¶Žš‚ª‚Ç‚ê‚©‚É‘µ‚Á‚Ä‚¢‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·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)));
}
FX‚È•ªŠ„
•¶Žš‚Å•ªŠ„‚Å‚Ý‚½‚悤‚É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—vB
@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)"‚̂悤‚ÉAs––‹Ö‘¥•¶Žš‚Æ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/)]}fhvxjnp!,.:;?ABXJKICDFGH/;
# s––‹Ö‘¥•¶Žšiˆê•”•ªj
$NotAtEnd = q/([{eguwimo/;
# ƒ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‚Å‚«‚邽‚߂̉Šú’lB
# •¶Žš’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‚Ì”ÍˆÍ‚ð‹–‚·jB
$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[•ª‚Ì‚Ü‚Ü‹Lq‚µ‚Ä‚¢‚Ü‚·‚Ì‚ÅA‚à‚µ‰½‚©ŽQl‚É‚µ‚悤‚ÆŽv‚Á‚½ê‡A\•ª‚É’ˆÓ‚ÌãA”[“¾‚Å‚«‚é‚Ü‚Å‚²Ž©•ª‚Ìì‹ÆŠÂ‹«‚ŃeƒXƒg‚µ‚Ä‚‚¾‚³‚¢B
Windows (95/98/NT/2000‚È‚Ç) ‚ÅAƒtƒ@ƒCƒ‹–¼‚âƒpƒX–¼‚ªŠ¿Žši‚±‚±‚Å‚Í“ñƒoƒCƒg•¶Žš‚̈Ӗ¡‚ÅŽg‚Á‚Ä‚¢‚Ü‚·‚Ì‚ÅA•½‰¼–¼‚â‹L†‚È‚Ç‚àŠÜ‚Ý‚Ü‚·Bj‚ðŠÜ‚Þê‡APerl‚ňµ‚¤Û‚É–â‘肪¶‚¶‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B
––”öƒoƒCƒg‚ª "\x5C" ‚ÌŠ¿Žš‚ð‚à‚ƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼
ƒfƒBƒŒƒNƒgƒŠ‘€ìŠÖ”imkdir, rmdir, opendir, -d ‚È‚ÇjAƒ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" ‚È‚ÇjB
ƒfƒBƒŒƒNƒgƒŠ‚ÌꇂÍA––”ö‚É / ‚© \ ‚ð“Y‚¦‚é‚ƃAƒNƒZƒX‚Å‚«‚éꇂª‚ ‚è‚Ü‚·i—Ⴆ‚ÎA-d '•\/' ‚Ü‚½‚Í -d "\x95\x5C/" ‚È‚ÇjB––”ö‚É“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