4 |
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
5 |
<html xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml"> |
<html xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml"> |
6 |
<head> |
<head> |
7 |
<title xml:lang="en">Message::* Perl modules</title> |
<title>manakai ($B5l>N(B Message::* Perl modules)</title> |
8 |
<link rel="index" href="./" /> |
<link rel="index" href="./" /> |
9 |
<link rel="stylesheet" href="/s/simpledoc.css" type="text/css" /> |
<link rel="stylesheet" href="/s/simpledoc.css" type="text/css" /> |
10 |
<link rev="made" href="mailto:w@suika.fam.cx" /> |
<link rev="made" href="mailto:w@suika.fam.cx" /> |
13 |
<meta name="keywords" content="Perl, module, pm, Message, RFC 822, RFC 2822, RFC 1036, son-of-RFC1036, MIME, Usefor, HTTP, CGI, header, field" /> |
<meta name="keywords" content="Perl, module, pm, Message, RFC 822, RFC 2822, RFC 1036, son-of-RFC1036, MIME, Usefor, HTTP, CGI, header, field" /> |
14 |
</head> |
</head> |
15 |
<body> |
<body> |
16 |
<h1>Message::* Perl modules</h1> |
<h1>manakai ($B5l>N(B Message::* Perl modules)</h1> |
17 |
|
|
18 |
|
<p>$BCm0U(B: $B$3$NJ8=q$NFbMF$K$O8E$$;vJA$,4^$^$l$F$$$^$9!#(B |
19 |
|
$B:G?7$N>pJs$O(B |
20 |
|
<a href="/~wakaba/-temp/wiki/wiki?manakai">SuikaWiki:manakai</a> |
21 |
|
$B$r$4Mw$/$@$5$$!#(B</p> |
22 |
|
|
23 |
<h2>$B$O$8$a$N$O$8$a$K(B</h2> |
<h2>$B$O$8$a$N$O$8$a$K(B</h2> |
24 |
|
|
25 |
<p>$B$?$H$($P(B Perl $B$G=q$+$l$?(B CGI script, $B$=$l$b7G<(HD$J$s$+$K$O!"(B |
<p>$B$?$H$($P(B Perl $B$G=q$+$l$?(B CGI script, $B$=$l$b7G<(HD$J$s$+$K$O!"(B |
26 |
$B$3$s$J$_$C$H$b$J$$(B code $B$,:\$C$F$$$?$j$7$^$9!#(B</p> |
$B$3$s$J$_$C$H$b$J$$(B code $B$,:\$C$F$$$?$j$7$^$9!#(B</p> |
27 |
|
|
28 |
<pre class="application-x-perl"> |
<pre class="example"><code class="perl">jcode'convert(*from, "jis"); |
|
jcode'convert(*from, "jis"); |
|
29 |
jcode'convert(*subject, "jis"); |
jcode'convert(*subject, "jis"); |
30 |
jcode'convert(*message, "jis"); |
jcode'convert(*message, "jis"); |
31 |
open (MAIL, "| $sendmail"); |
open (MAIL, "| $sendmail"); |
36 |
print MAIL "$message"; |
print MAIL "$message"; |
37 |
print MAIL "\n"; |
print MAIL "\n"; |
38 |
close (MAIL); |
close (MAIL); |
39 |
</pre> |
</code></pre> |
40 |
|
|
41 |
<p>$B$3$l$G$O;kG'@-$bNI$/$J$$$G$9$7!"$&$C$+$j=$@5$74V0c$($k$H(B |
<p>$B$3$l$G$O;kG'@-$bNI$/$J$$$G$9$7!"$&$C$+$j=$@5$74V0c$($k$H(B |
42 |
$BJQ$J%a%C%;!<%8$rAw?.$7$F$7$^$$$^$9!#(B |
$BJQ$J%a%C%;!<%8$rAw?.$7$F$7$^$$$^$9!#(B |
81 |
<li>$B7k9=%*%V%8%'%/%H;X8~$G$9!#(B</li> |
<li>$B7k9=%*%V%8%'%/%H;X8~$G$9!#(B</li> |
82 |
<li>RFC 822/2822 $B$N(B <code class="bnf rfc2822">group</code> $B$r2r<a=PMh$^$9!#(B</li> |
<li>RFC 822/2822 $B$N(B <code class="bnf rfc2822">group</code> $B$r2r<a=PMh$^$9!#(B</li> |
83 |
<li><a href="urn:ietf:id:draft-ietf-usefor-msg-id-alt-00">draft-ietf-usefor-msg-id-alt-00</a> $B$K4p$E$$$?Aw?.%"%I%l%9$J$I$K$h$k(B <code class="rfc2822">Message-ID</code> $B$r@8@.=PMh$^$9!#(B</li> |
<li><a href="urn:ietf:id:draft-ietf-usefor-msg-id-alt-00">draft-ietf-usefor-msg-id-alt-00</a> $B$K4p$E$$$?Aw?.%"%I%l%9$J$I$K$h$k(B <code class="rfc2822">Message-ID</code> $B$r@8@.=PMh$^$9!#(B</li> |
84 |
<li>$BJ8;z%3!<%IFHN)(B (CSI) $B$G$9!#(B ($BC"$7(B RFC 822 $B$G$"$kET9g>e(B($BFf(B)$B!"(B |
<li><a href="charset" title="$BJ8;z%3!<%I$N07$$(B">$BJ8;z%3!<%IJQ49=hM}$r30It$KDI$$=P$7$F$$$^$9(B</a>$B!#(B |
85 |
ASCII $B8_49$G$"$kI,MW$O$"$j$^$9!#(B EBCDIC $B$H$+$OL5M}$G$9(B:-< |
jcode.pl $B$G$b(B Jcode.pm $B$G$b(B Encode::* $B$G$b!"9%$-$J$b$N$r$*;H$$2<$5$$!#(B</li> |
|
($B$H$$$&$N$O%a%C%;!<%89=B$$NItJ,$N$3$H$G$9!#(B |
|
|
MIME $B$r;H$C$F(B EBCDIC $B$J$I$r%a%C%;!<%8K\J8$KF~$l$k$3$H$O2DG=$G$9!#(B))</li> |
|
86 |
<li>MIME (<a href="urn:ietf:rfc:2045">RFC 2045</a>, |
<li>MIME (<a href="urn:ietf:rfc:2045">RFC 2045</a>, |
87 |
<a href="urn:ietf:rfc:2046">2046</a>) $B$K$[$\40A4$KBP1~$7$F$$$^$9!#(B</li> |
<a href="urn:ietf:rfc:2046">2046</a>) $B$K$[$\40A4$KBP1~$7$F$$$^$9!#(B</li> |
88 |
</ol> |
</ol> |
138 |
$B@5$7$/=hM}=PMh(B<del>$B$^$;$s(B</del><ins>$B$J$$$3$H$,$"$j$^$9(B |
$B@5$7$/=hM}=PMh(B<del>$B$^$;$s(B</del><ins>$B$J$$$3$H$,$"$j$^$9(B |
139 |
($B6a$$>-Mh$NHG$G2~A1$NM=Dj(B)</ins>$B!#(B (<code>CRLF</code> $B$HEy2A$H$_$J$7$^$9!#(B) |
($B6a$$>-Mh$NHG$G2~A1$NM=Dj(B)</ins>$B!#(B (<code>CRLF</code> $B$HEy2A$H$_$J$7$^$9!#(B) |
140 |
$B>-Mh$NHG$G$O%*%W%7%g%s$G@)8f2DG=$K$J$k$+$b$7$l$^$;$s!#(B</li> |
$B>-Mh$NHG$G$O%*%W%7%g%s$G@)8f2DG=$K$J$k$+$b$7$l$^$;$s!#(B</li> |
141 |
<li>$B$"$C$?$iNI$5$=$&$J5!G=$,L$<BAu$+$b$7$l$^$;$s!#(B |
<li>$B@bL@J8(B (document; pod) $B$,$$$$2C8:$G$9(B ($B=q$/$N$,LLE]$@(B)$B!#(B</li> |
|
($BM_$7$$5!G=$,L$<BAu$@$C$?$i!"(B |
|
|
<a href="mailto:w@suika.fam.cx">$BEE;R%a%$%k(B</a>$B$d(B |
|
|
<a href="news://suika.fam.cx/suika.msg">suika.msg</a> |
|
|
$B$J$I$G65$($F2<$5$$!#(B)</li> |
|
|
<li>$B3F%b%8%e!<%k$N%*%W%7%g%sBN7O$,$"$^$j@0Hw$5$l$F$$$^$;$s!#(B |
|
|
($B$=$l$G$b5$;}$A0-$/$J$$DxEY$K$OBN7OE*$@$H;W$$$^$9!#(B)</li> |
|
|
<li>$B@bL@J8(B (document) $B$,NI$$2C8:$G$9!#(B</li> |
|
|
</ol> |
|
|
|
|
|
<h2>$B:#8e$NM=Dj(B</h2> |
|
|
|
|
|
<ol> |
|
|
<li>$BEE;R%K%e!<%9$NF,NN0h(B (RFC 1036, |
|
|
<a href="spec/son-of-RFC1036">son-of-RFC1036</a>, |
|
|
draft-usefor-article) $B$N40A4<BAu(B</li> |
|
|
<li>$BDI2C(B/$BHsI8=`$NF,NN0h$N<BAu!#(B</li> |
|
|
<li>documentation$B!#(B</li> |
|
|
<li>$B;HMQNc$N:n@.!#(B</li> |
|
|
<li>$B4{B8%b%8%e!<%k$,MxMQ=PMh$kItJ,$O!"$=$l$r8F$S=P$9$h$&$K$9$k$+(B |
|
|
$B$=$N(B code $B$rN.MQ$9$k!#(B</li> |
|
|
<li>$BN`;w%b%8%e!<%k$H$N3&LL$N6&DL2=(B</li> |
|
142 |
</ol> |
</ol> |
143 |
|
|
144 |
<h2>$BI,MW4D6-(B</h2> |
<h2>$BI,MW4D6-(B</h2> |
145 |
|
|
146 |
<ol> |
<ol> |
147 |
<li>Perl (perl 5.6 $B0J9_$^$?$O(B<span title="human parser">$B?M4V2r@O<T(B</span>:-)) |
<li>Perl 5.6 $B0J9_(B |
148 |
<p class="note"><code class="bnf rfc822">comment</code> |
<p class="note"><code class="bnf rfc822">comment</code> |
149 |
$B$rI=$9$N$K@55,I=8=(B <code class="regex">(??{ <var>code</var> })</code> |
$B$rI=$9$N$K@55,I=8=(B |
150 |
|
<code class="regex">(??{ <var>code</var> })</code> |
151 |
$B$r;H$C$F$$$k$N$G!"$3$l$r2r<a=PMh$k!"(B |
$B$r;H$C$F$$$k$N$G!"$3$l$r2r<a=PMh$k!"(B |
152 |
5.6 $B0J9_$NHG$G$"$kI,MW$,$"$j$^$9!#(B</p> |
5.6 $B0J9_$NHG$G$"$kI,MW$,$"$j$^$9!#(B</p> |
153 |
</li> |
</li> |
154 |
<li>Digest::MD2, Digest::MD5, Digest::SHA1 |
<li>Digest::MD2, Digest::MD5, Digest::SHA1 |
155 |
<p>Message-ID $B$N@8@.$K$3$l$i$r;HMQ$9$k>l9g$N$_!"(B |
<p>Message-ID $B$N@8@.$K$3$l$i$r;HMQ$9$k>l9g$N$_!"(B |
156 |
<code>Message::Field::MsgID</code> $B$,;H$$$^$9!#(B</p> |
Message::Field::MsgID $B$,;H$$$^$9!#(B</p> |
157 |
<p>$B$3$l$i$,MQ0U$5$l$F$$$J$$4D6-$G$O%(%i!<$K$J$k$N$G!"(B |
<p><code class="bnf mime">Content-MD5:</code> $BNN0h$NIU2C$d8!>Z$r9T$&>l9g!"(B |
158 |
($B8=>u$G$O(B) $B>e5-%b%8%e!<%k$N3:EvItJ,$r=q$-49$($FBP=h$7$F2<$5$$!#(B</p> |
Digest::MD5 $B$,I,MW$G$9!#(B (Message::Entity)</p> |
159 |
</li> |
</li> |
160 |
<li>MIME::Base64 |
<li>MIME::Base64 |
161 |
<p>$B$A$J$_$K!"(B Quoted-Printable $B$d(B RFC 2231 $B$N(B |
<p>$B$A$J$_$K!"(B Quoted-Printable $B$d(B RFC 2231 $B$N(B |
172 |
|
|
173 |
<p>suika.fam.cx $B$N(B SSH account $B$r$*;}$A$N>l9g!"(B CVS $B$+$iF~<j=PMh$^$9!#(B</p> |
<p>suika.fam.cx $B$N(B SSH account $B$r$*;}$A$N>l9g!"(B CVS $B$+$iF~<j=PMh$^$9!#(B</p> |
174 |
|
|
175 |
<p class="example">$ cvs -d :ext:<var xml:lang="en">username</var>@suika.fam.cx:/home/cvs -d perl/lib/Message/</p> |
<p class="example"><samp>$ </samp><kbd>cvs -d :ext:<var xml:lang="en">username</var>@suika.fam.cx:/home/cvs co messaging/manakai</kbd></p> |
176 |
|
|
177 |
|
<p>Web $B$+$i$b<h$j=P$;$^$9(B: |
178 |
|
<code class="uri"><<a href="/gate/cvs/messaging/manakai/">http://suika.fam.cx/gate/cvs/messaging/manakai/</a>></code></p> |
179 |
|
|
180 |
<p>Web $B$+$i$b<h$j=P$;$^$9!#(B <<a href="/gate/cvs/perl/lib/Message/">http://suika.fam.cx/gate/cvs/perl/lib/Message/</a>> (tarball $B$G0l3g<hF@$b=PMh$^$9!#(B)</p> |
<p><a href="/gate/cvs/messaging/manakai/manakai.tar.gz?tarball=1">$B:G?73+H/HG(B |
181 |
|
snapshot $B$N(B tarball $B$r<hF@(B</a>$B$9$k$3$H$b$G$-$^$9!#(B</p> |
182 |
|
|
183 |
<h2>$B%i%$%;%s%9(B</h2> |
<h2>$B%i%$%;%s%9(B</h2> |
184 |
|
|
185 |
<p>Message::* Perl modules $B$O<+M3%=%U%H%&%'%"$G$9!#(B |
<p>manakai $B$O<+M3%=%U%H%&%'%"$G$9!#(B |
186 |
GNU GPL $B$K=>$C$FMxMQ=PMh$^$9!#>\$7$/$O3F%U%!%$%k$r8fMw2<$5$$!#(B</p> |
<a href="http://www.gnu.org/">GNU</a> |
187 |
|
<a href="/c/gnu/gpl">GPL</a> $B$K=>$C$FMxMQ=PMh$^$9!#(B |
188 |
|
$B>\$7$/$O3F9=@.%U%!%$%k$r8fMw2<$5$$!#(B</p> |
189 |
|
|
190 |
<h2>$B;29MJ88%(B</h2> |
<h2>$B4XO"J8=q$J$I(B</h2> |
191 |
|
|
192 |
<ul> |
<ul> |
193 |
<li><a href="spec/">$B4XO"$9$k;EMM=q(B (RFC, Internet-Draft $BEy(B)</a></li> |
<li id="code"><a href="charset">$BJ8;z%3!<%I$N07$$(B</a></li> |
194 |
|
<li><a href="/~wakaba/-temp/wiki/wiki?manakai">SuikaWiki:manakai</a></li> |
195 |
</ul> |
</ul> |
196 |
|
|
197 |
<h2 id="code">$BJ8;z%3!<%I$N07$$(B</h2> |
<h2>$B1~MQ(B</h2> |
|
|
|
|
<p>$BH\$7$$$3$H$GF,$rG:$^$9$N$O7y$J$N$G(B($BON(B)$B!"(B |
|
|
[[ $B"*(B<a href="#code-easy">$B<j$C<h$jAa$/J}K!$@$1FI$`(B</a>$B!#(B ]] |
|
|
Message::* $B$OId9f2=J}K!FHN)(B (CSI) $B$rL\;X$7$F<BAu$7$F$$$^$9!#(B |
|
|
($BC"$7(B ASCII $B$N$7$,$i$_$@$1$OCG$A@Z$C$F$$$^$;$s(B:-)) |
|
|
0x00 $B!A(B 0x7F $B$,(B ASCII ($B$^$?$O(B ASCII $B$H8+$J$7$FNI$$$b$N(B) $B$G$"$k(B |
|
|
$B>l9g$O!"(B Message::* $B$rDL$7$?$3$H$G%G!<%?$,2u$l$k$3$H$O(B |
|
|
$BL5$$$H;W$$$^$9!#(B</p> |
|
|
|
|
|
<p>($B$b$A$m$s!"(B RFC 822 $B$J$I3F;EMM$K>H$i$7$F@5E}(B($BE*(B)$B$G(B |
|
|
$B$"$kI,MW$,$"$j$^$9!#(B <code class="bnf rfc822">atom</code> |
|
|
$B$K(B8$B%S%C%H!&%3!<%I$,4^$^$l$F$$$k$H@5$7$/07$($^$;$s!#(B) |
|
|
($BAa$$OC$,!"(B <code class="bnf rfc822">quoted-string</code> |
|
|
$B$J$I$G$O(B8$B%S%C%HF)2a$@$H$$$&$3$H$G$9!#2s$j$/$I$/$F$4$a$s$J$5$$!#(B)</p> |
|
|
|
|
|
<p>$B4{Dj$N>uBV$G$OJ8;z%3!<%I$K4X78$9$kJQ49=hM}$O9T$o$l$^$;$s!#(B |
|
|
$B$7$+$7!"%U%C%/4X?t$C$]$$$b$N(B($BFf(B)$B$r;XDj$9$k$3$H$G!"(B |
|
|
$BJQ49=hM}$r$5$;$i$l$^$9!#(B</p> |
|
|
|
|
|
<p>$B;XDj=PMh$k%U%C%/4X?t$C$]$$$b$N$O(B2$B<oN`$G$9!#(B |
|
|
<code>DECODER</code> $B$O!"85$N%a%C%;!<%8$r2r@O$9$k;~(B |
|
|
(<code class="perl">parse ()</code>) $B$KE,598F$S=P$5$l$^$9!#(B |
|
|
<code>ENCODER</code> $B$O!"%a%C%;!<%8$H$7$FJ8;zNs2=$9$k:](B |
|
|
(<code class="perl">stringify ()</code> $B$J$I(B) $B$KE,598F$S=P$5$l$^$9!#(B</p> |
|
|
|
|
|
<p>$B$3$l$i$N4X?t$O!"EvA3!"Ev3:=hM}$,8F$S=P$5$l$kA0$K;XDj$7$F$*$/(B |
|
|
$BI,MW$,$"$j$^$9!#(B |
|
|
<samp class="perl">Message::Entity->parse</samp> $B$J$I$9$kA0$K(B |
|
|
$BDj5A$7$F$*$/$HNI$$$G$7$g$&!#(B</p> |
|
|
|
|
|
<pre class="example perl"> |
|
|
require Message::MIME::Charset; |
|
|
$Message::MIME::Charset::DECODER{'*default'} = sub {jcode::euc ($_[1])}; |
|
|
$Message::MIME::Charset::ENCODER{'*default'} = sub {jcode::jis ($_[1], 'euc')}; |
|
|
</pre> |
|
|
|
|
|
<p>$B$3$NNc$G$O!"(B jcode.pl $B$rJQ49=hM}$K;H$$$^$9!#(B |
|
|
($B$b$A$m$s!"4{$K(B <code class="perl">require</code> |
|
|
$B$5$l$F$$$k$H2>Dj$7$F$$$^$9!#(B)</p> |
|
|
<p>$B:G=i$N(B <code class="perl">require</code> $B$G!"JQ49=hM}$rC4Ev$7$F$$$k(B |
|
|
<code class="perl">Message::MIME::Charset</code> $B$rFI$_9~$_$^$9!#(B |
|
|
($B$3$&$7$F$*$+$J$$$H!"8e$+$i4{DjCM(B (= $BL5JQ49(B) $B$G(B |
|
|
<code class="perl">*default</code> $B$,>e=q$-$5$l$F$7$^$$$^$9!#(B)</p> |
|
|
|
|
|
<p>$B$3$N(B code $B$r;H$C$?%9%/%j%W%H$OFbIt=hM}$rF|K\8l(B EUC |
|
|
$B$G9T$&$H2>Dj$7$F$$$^$9!#$G$9$+$i!"(B <code class="perl">DECODER</code> |
|
|
$B$GF|K\8l(B EUC $B$KJQ49$7$^$9!#(B</p> |
|
|
<p>$B$^$?!"F|K\8l%a%C%;!<%8$G$O(B <code>ISO-2022-JP</code> |
|
|
$B$r;H$&$N$,47=,$G$9$+$i!"(B <code class="perl">ENCODER</code> |
|
|
$B$G$O(B 7$B%S%C%H(B JIS $B$KJQ49$7$F$$$^$9!#(B</p> |
|
|
<p>$B=hM}$r9T$&4X?t$O!"0z?t$,(B2$B$D0J>eM?$($i$l$^$9!#(B |
|
|
1$B$DL\$N0z?t$O8F$S=P$7$?(B class module, $B$$$o$f$k(B |
|
|
<code class="perl">$self</code> $B$G$9!#(B($B$3$N>l9g(B self $B$G$O$"$j$^$;$s$,(B:-) |
|
|
$B$G$bIaDL$OI,MW$J$$$G$7$g$&!#(B</p> |
|
|
<p>2$B$DL\$N0z?t$O=hM}BP>]$NJ8;zNs$G$9!#(B</p> |
|
|
<p>3$B$DL\0J9_$N0z?t$O!"DI2C%*%W%7%g%s$N%O%C%7%e$G$9!#(B |
|
|
$B$?$@$7!"8=:_DI2C%*%W%7%g%s$ODj5A$5$l$F$$$^$;$s!#(B</p> |
|
|
<p>$B4X?t$,JV$9CM$O(B($B:#$N$H$3$m(B)$B0l$D$@$1$G$9!#(B |
|
|
$B=hM}$,=*$o$C$?J8;zNs$G$9!#JQ497k2L$H$7$F2?$b$J$/$J$C$F$7$^$C$?$i!"(B |
|
|
$B$b$A$m$s6uJ8;zNs$rJV$7$F9=$$$^$;$s!#(B (<code class="perl">undef</code> |
|
|
$B$h$j$b6uJ8;zNs$NJ}$,K>$^$7$$$G$7$g$&!#(B)</p> |
|
|
|
|
|
<p>$B$5$F!">e5-$NNc$G$O!V(B<code>*default</code>$B!W$N(B EN/DECODER |
|
|
$B$r;XDj$7$^$7$?$,!"$3$3$K$OBe$o$j$K(B charset $BL>$r;XDj=PMh$^$9!#(B</p> |
|
|
|
|
|
<pre class="perl example"> |
|
|
$Message::MIME::Charset::DECODER{'iso-2022-jp'} = sub {jcode::euc ($_[1], 'jis')}; |
|
|
</pre> |
|
198 |
|
|
199 |
<p>$B$3$3$G$O!"(B <code>ISO-2022-JP</code> $B$rFbIt%3!<%I$KJQ49$9$k(B |
<ul> |
200 |
$BJ}K!$rDj5A$7$F$$$^$9!#(B charset $BL>(B ($B$*$h$S!V(B<code>*default</code>$B!W(B |
<li><a href="/gate/cvs/tool/bunshin/">Bunshin.pm</a> |
201 |
$B$OI,$:>.J8;z$G=q$$$F2<$5$$(B!)</p> |
<p>Web $B>e$NO"B3$9$k;q8;(B ($B7G<(HD$N5-;v$N$h$&$J$b$N(B) |
202 |
<p>MIME body $B$d!"(B encoded-word, RFC 2231 $B$N3HD%%Q%i%a!<%?!<CM(B |
$B$r@Z$j=P$7$F(B RFC 822 $B7A<0$N%a%C%;!<%8$K$9$k%(%s%8%sItJ,!#(B</p> |
203 |
$B$J$I!"(B charset $B$,;XDj$5$l$F$$$k;~$O$=$N(B charset $BL>$NJQ494X?t$,(B |
</li> |
204 |
$B8F$S=P$5$l$^$9!#(B ($B;XDj$5$l$?(B charset $BL>$NJQ494X?t$,L$Dj5A$N;~$O!"(B |
<li><a href="/gate/cvs/tool/suikawari/">$B$9$$$+$o$j(B</a> |
205 |
$B2?$b=hM}$7$^$;$s!#(B) $B$3$l0J30$N>lLL$G$O!"(B <code>*default</code> |
<p>Bunshin.pm $B$r;H$C$F!"EE;R%K%e!<%9$K5-;v$rEj9F$9$k(B |
206 |
$B$GDj5A$5$l$?4X?t$,;H$o$l$^$9!#(B</p> |
script$B!#(B (cron $B$H$+$+$i8F$S=P$7$F;H$&!#(B)</p> |
207 |
|
</li> |
208 |
<!-- |
</ul> |
|
<p>$B:G8e$K!"F|K\8l%a%C%;!<%8$r07$&:]$NNc$r5s$2$F$*$-$^$9!#(B</p> |
|
|
|
|
|
<pre class="example perl"> |
|
|
<span class="comment">## jcode.pl $B$r;HMQ(B</span> |
|
|
require 'jcode.pl'; |
|
|
require Message::MIME::Charset; |
|
|
$Message::MIME::Charset::DECODER{'*default'} = sub {jcode::euc ($_[1])}; |
|
|
$Message::MIME::Charset::DECODER{'iso-2022-jp'} = sub {jcode::euc ($_[1], 'jis')}; |
|
|
$Message::MIME::Charset::DECODER{'euc-jp'} = sub {$_[1]}; |
|
|
$Message::MIME::Charset::DECODER{'shift_jis'} = sub {jcode::euc ($_[1], 'sjis')}; |
|
|
$Message::MIME::Charset::ENCODER{'*default'} = sub { |
|
|
my $s = $_[1]; |
|
|
<span class="comment">## $B@55,2=(B</span> |
|
|
jcode::tr(\$s, |
|
|
"\xa3\xb0-\xa3\xb9\xa3\xc1-\xa3\xda\xa3\xe1-\xa3\xfa\xa1\xf5". |
|
|
"\xa1\xa4\xa1\xa5\xa1\xa7\xa1\xa8\xa1\xa9\xa1\xaa\xa1\xae". |
|
|
"\xa1\xb0\xa1\xb2\xa1\xbf\xa1\xc3\xa1\xca\xa1\xcb\xa1\xce". |
|
|
"\xa1\xcf\xa1\xd0\xa1\xd1\xa1\xdc\xa1\xf0\xa1\xf3\xa1\xf4". |
|
|
"\xa1\xf6\xa1\xf7\xa1\xe1\xa2\xaf\xa2\xb0\xa2\xb2\xa2\xb1". |
|
|
"\xa1\xe4\xa1\xe3\xA1\xC0\xA1\xA1" |
|
|
=> '0-9A-Za-z&,.:;?!`^_/|()[]{}+$%#*@=\'"~-><\\ '); |
|
|
jcode::jis ($s, 'euc', 'z') |
|
|
}; |
|
|
</pre> |
|
|
|
|
|
<pre class="example perl"> |
|
|
<span class="comment">## Jcode.pm $B$r;HMQ(B</span> |
|
|
use Jcode; |
|
|
require Message::MIME::Charset; |
|
|
$Message::MIME::Charset::DECODER{'*default'} = sub {jcode::euc ($_[1])}; |
|
|
$Message::MIME::Charset::DECODER{'iso-2022-jp'} = sub {Jcode->new ($_[1], 'jis')->euc}; |
|
|
$Message::MIME::Charset::DECODER{'euc-jp'} = sub {$_[1]}; |
|
|
$Message::MIME::Charset::DECODER{'shift_jis'} = sub {Jcode->new ($_[1], 'sjis')->euc}; |
|
|
$Message::MIME::Charset::DECODER{'utf-8'} = sub {Jcode->new ($_[1], 'utf8')->euc}; |
|
|
$Message::MIME::Charset::ENCODER{'*default'} = sub {Jcode->new ($_[1], 'euc')->jis}; |
|
|
$Message::MIME::Charset::ENCODER{'utf-8'} = sub {Jcode->new ($_[1], 'euc')->utf8}; |
|
|
</pre> |
|
|
--> |
|
|
|
|
|
<p id="code-easy">$B$d$d$3$7$$@bL@$r$7$F$-$^$7$?$,!"<B:]LLE]$J$N$G!"F|K\8lJ8;z%3!<%IJQ49$KNI$/;H$o$l$k!"(B |
|
|
jcode.pl $B$d(B Jcode.pm $B$J$I$N$?$a$N@_Dj$OM=$aMQ0U$7$F$"$j$^$9!#(B</p> |
|
|
|
|
|
<pre class="example perl"> |
|
|
<span class="comment">## $B$I$A$i$+9%$-$JJ}$r$I$&$>!#(B</span> |
|
|
use Message::MIME::Charset::Jcode 'jcode.pl'; |
|
|
use Message::MIME::Charset::Jcode 'Jcode'; |
|
|
</pre> |
|
|
|
|
|
<p>$B$3$N(B1$B9T$@$1$G!"(B ISO-2022-JP, EUC-JP, Shift_JIS |
|
|
$B$*$h$S4v$D$+$N4XO"(B charset $B$,MxMQ2DG=$K$J$j$^$9!#(B</p> |
|
209 |
|
|
210 |
<p>Perl 5.8 $B$K$J$C$F(B Encode $B%b%8%e!<%k$,;H$($k$h$&$K$J$l$P!"(B |
<h2>$B:#8e$NM=Dj(B</h2> |
|
$B$b$C$H?'!9$JJ8;z%3!<%I$,3Z$KMxMQ$G$-$k$h$&$K$J$k$H4|BT$7$F$$$^$9!#(B</p> |
|
211 |
|
|
212 |
<p>$B$H$3$m$G!"$3$N$h$&$K(B charset $BBP1~=hM}$r$7$J$/$F$b!"(B |
<ol> |
213 |
MIME $B$G(B charset $B;%IU$1$5$l$F%a%C%;!<%8$K4^$a$i$l$F$$$kL$CN$N(B |
<li>$BEE;R%K%e!<%9$NF,NN0h(B (RFC 1036, |
214 |
charset $B$N%G!<%?$,GK2u$5$l$k$3$H$O$"$j$^$;$s!#(B ($B$O$:$G$9!#(B) |
<a href="spec/son-of-RFC1036">son-of-RFC1036</a>, |
215 |
($B$=$3$$$i$,!"(B Unicoder $B$N%=%U%H%&%'%"$H$N0c$$$G$9(B($B>P(B)$B!#(B)</p> |
draft-usefor-article) $B$N40A4<BAu(B</li> |
216 |
|
<li>$BDI2C(B/$BHsI8=`$NF,NN0h$N<BAu!#(B</li> |
217 |
|
<li>documentation$B!#(B</li> |
218 |
|
<li>$B;HMQNc$N:n@.!#(B</li> |
219 |
|
<li>$B4{B8%b%8%e!<%k$,MxMQ=PMh$kItJ,$O!"$=$l$r8F$S=P$9$h$&$K$9$k$+(B |
220 |
|
$B$=$N(B code $B$rN.MQ$9$k!#(B</li> |
221 |
|
<li>$BN`;w%b%8%e!<%k$H$N3&LL$N6&DL2=(B</li> |
222 |
|
<li>HTTP $BMQ$K;H$($k$h$&$K$9$k(B</li> |
223 |
|
</ol> |
224 |
|
|
225 |
<div class="navigation"> |
<div class="navigation"> |
226 |
[<a href="/" title="$B$3$N%5!<%P!<$N<sJG(B">/</a> |
[<a href="/" title="$B$3$N%5!<%P!<$N<sJG(B">/</a> |