{"id":70,"date":"2006-08-28T18:47:45","date_gmt":"2006-08-28T09:47:45","guid":{"rendered":"https:\/\/deskplate.net\/blog\/2006\/08\/28\/perl%e3%81%ab%e3%82%88%e3%82%8b%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1\/"},"modified":"2006-08-28T18:47:45","modified_gmt":"2006-08-28T09:47:45","slug":"perl%e3%81%ab%e3%82%88%e3%82%8b%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1","status":"publish","type":"post","link":"https:\/\/deskplate.net\/blog\/archives\/70","title":{"rendered":"Perl\u306b\u3088\u308b\u30e1\u30fc\u30eb\u9001\u4fe1"},"content":{"rendered":"<p>Java\u307f\u305f\u3044\u306b\u4f7f\u3048\u308b\u30e1\u30fc\u30eb\u9001\u4fe1pm\u3092\u7d44\u3093\u3067\u307f\u307e\u3057\u305f<br \/>\n\u4f7f\u3046\u5834\u5408\u306f\u3053\u3093\u306a\u98a8\u306b<br \/>\nuse Function::mail;<br \/>\nFunction::mail::setSubject(&#8220;\u984c\u540d&#8221;);<br \/>\nFunction::mail::setBody(&#8220;\u672c\u6587&#8221;);<br \/>\nFunction::mail::setFromAddress(&#8220;aaa@aaa.co.jp&#8221;);<br \/>\nFunction::mail::setToAddress(&#8220;bbb@bbb.co.jp&#8221;);<br \/>\nFunction::mail::send();<br \/>\npm \u306f\u7d9a\u304d<\/p>\n<p><!--more--><br \/>\nmail.pm<br \/>\npackage Function::mail;<br \/>\nuse strict;<br \/>\nuse CGI;<br \/>\nuse Jcode;<br \/>\nuse MIME::Entity;<br \/>\nuse MIME::Base64;<br \/>\nuse Unicode::Japanese;<br \/>\nmy $mailer = &#8216;\/usr\/lib\/sendmail&#8217;;<br \/>\nmy $from_address;<br \/>\nmy $err = 0;<br \/>\nmy $mail_template;<br \/>\nmy $mail_subject;<br \/>\nmy $email_body;<br \/>\n# \u30e1\u30fc\u30eb\u306eSubject\u3092\u30bb\u30c3\u30c8\u3059\u308b<br \/>\nsub setSubject{<br \/>\n\u3000\u3000$mail_subject  =  shift;<br \/>\n}<br \/>\n# \u30e1\u30fc\u30eb\u672c\u6587\u306e\u30bb\u30c3\u30c8<br \/>\nsub setBody{<br \/>\n\u3000\u3000$email_body = shift;<br \/>\n}<br \/>\n# \u30e1\u30fc\u30eb\u3042\u3066\u5148<br \/>\nsub setToAddress{<br \/>\n\u3000\u3000$to_address = shift;<br \/>\n}<br \/>\n# \u30e1\u30fc\u30eb\u9001\u4fe1\u5143<br \/>\nsub setFromAddress{<br \/>\n\u3000\u3000$from_address = shift;<br \/>\n}<br \/>\n# \u9001\u4fe1\u90e8\u5206<br \/>\nsub send{<br \/>\n\u3000\u3000my $mime_subject = EncodeSubject( $mail_subject );<br \/>\n\u3000\u3000my $mime_body \u3000\u3000\u3000\u3000= Jcode::convert($email_body,&#8217;jis&#8217;);<br \/>\n\u3000\u3000\u3000\u3000open(MAIL, &#8220;| $mailer -t $to_address -f $from_address&#8221;) or $err = 1;<br \/>\n\u3000\u3000\u3000\u3000if ($err == 0) {<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000#print MAIL $oMime->stringify;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000print MAIL &#8220;From: $from_address\\n&#8221;;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000print MAIL &#8220;To: $to_address\\n&#8221;;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000print MAIL &#8220;Subject: $mime_subject\\n&#8221;;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000print MAIL &#8220;Content-Transfer-Encoding: 7bit\\n&#8221;;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000print MAIL &#8220;Content-Type: text\/plain; charset=\\&#8221;ISO-2022-JP\\&#8221;\\n\\n&#8221;;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000print MAIL $mime_body;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000close(MAIL);<br \/>\n\u3000\u3000\u3000\u3000}<br \/>\n\u3000\u3000return $err;<br \/>\n}<br \/>\n# subject\u306e\u6587\u5b57\u30b3\u30fc\u30c9\u5909\u63db<br \/>\nsub EncodeSubject {<br \/>\n\u3000\u3000my($String) = @_;<br \/>\n\u3000\u3000#&#038;jcode::convert(\\$String, &#8220;euc&#8221;);<br \/>\n\u3000\u3000Jcode::convert(\\$String,&#8217;euc&#8217;);<br \/>\n\u3000\u3000my($Base64Table) = &#8216;ABCDEFGHIJKLMNOPQRSTUVWXYZ&#8217;.<br \/>\n\u3000\u3000                      &#8216;abcdefghijklmnopqrstuvwxyz&#8217;.<br \/>\n\u3000\u3000                      &#8216;0123456789+\/&#8217;;<br \/>\n\u3000\u3000my($chunk, $ByteChunk, $PackedByteChunk, $DecimalNum, $EncodedString);<br \/>\n\u3000\u3000my($SplitedWord, @SplitedWordList, $i, $Byte, $Buff);<br \/>\n\u3000\u3000my($KI) = 0;<br \/>\n\u3000\u3000my($KO) = 0;<br \/>\n\u3000\u3000my($CharNum) = 0;<br \/>\n\u3000\u3000my($CharType) = 0;<br \/>\n\u3000\u3000my($LineLength) = 0;<br \/>\n\u3000\u3000my($CharEndFlag) = 1;<br \/>\n\u3000\u3000my $BitStream;<br \/>\n\u3000\u3000if($String =~ \/[^a-zA-Z0-9\\!\\&#8221;\\#\\$\\%\\&#038;\\&#8217;\\(\\)\\*\\+\\,\\-\\.\\\/\\:\\;\\<\\=\\>\\?\\@\\[\\\/\\^\\_\\~ ]\/) {<br \/>\n\u3000\u3000\u3000\u3000$i = 0;<br \/>\n\u3000\u3000\u3000\u3000@SplitedWordList = ();<br \/>\n\u3000\u3000\u3000\u3000while($i < length($String)) {\n\u3000\u3000\u3000\u3000\u3000\u3000$Byte = substr($String, $i, 1);\n\u3000\u3000\u3000\u3000\u3000\u3000if($Byte =~ \/[\\x8E\\xA1-\\xFE]\/) {\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000unless($CharType eq 'K') {$KI ++;}\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$CharType = 'K';\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000if($CharEndFlag) {\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$CharEndFlag = 0;\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000} else {\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$CharEndFlag = 1;\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000}\n\u3000\u3000\u3000\u3000\u3000\u3000} else {\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000if($CharType eq 'K') {$KO ++;}\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$CharType = 'A';\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$CharEndFlag = 1;\n\u3000\u3000\u3000\u3000\u3000\u3000}\n\u3000\u3000\u3000\u3000\u3000\u3000$Buff .= $Byte;\n\u3000\u3000\u3000\u3000\u3000\u3000$CharNum += 1;\n\u3000\u3000\u3000\u3000\u3000\u3000$LineLength = 27 + ($CharNum*4\/3) + (($KI+$KO)*4) + 2;\n\u3000\u3000\u3000\u3000\u3000\u3000if($CharType eq 'K') {$LineLength += 4;}\n\u3000\u3000\u3000\u3000\u3000\u3000if($CharEndFlag &#038;&#038; $LineLength>=70) {<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000#&#038;jcode::convert(\\$Buff, &#8220;jis&#8221;);<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000Jcode::convert(\\$Buff,&#8217;jis&#8217;);<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000push(@SplitedWordList, $Buff);<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$Buff = &#8221;;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$CharNum = 0;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$CharType = 0;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$KI = 0;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$KO = 0;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000}<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000$i ++;<br \/>\n\u3000\u3000\u3000\u3000}<br \/>\n\u3000\u3000\u3000\u3000#&#038;jcode::convert(\\$Buff, &#8220;jis&#8221;);<br \/>\n\u3000\u3000\u3000\u3000Jcode::convert(\\$Buff,&#8217;jis&#8217;);<br \/>\n\u3000\u3000\u3000\u3000push(@SplitedWordList, $Buff);<br \/>\n\u3000\u3000\u3000\u3000for $SplitedWord (@SplitedWordList) {<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000$EncodedString .= &#8216;=?ISO-2022-JP?B?&#8217;;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000$BitStream = unpack(&#8220;B*&#8221;, $SplitedWord);<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000$i = 0;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000while($chunk = substr($BitStream, $i*6, 6)) {<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000unless(length($chunk) == 6) {<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$chunk = pack(&#8220;B6&#8221;, $chunk);<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$chunk = unpack(&#8220;B6&#8221;, $chunk);<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000}<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$ByteChunk = sprintf(&#8220;%08d&#8221;, $chunk);<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$PackedByteChunk = pack(&#8220;B8&#8221;, $ByteChunk);<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$DecimalNum = unpack(&#8220;C&#8221;, $PackedByteChunk);<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$EncodedString .= substr($Base64Table, $DecimalNum, 1);<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$i++;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000}<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000if(length($SplitedWord) % 3 == 1) {<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$EncodedString .= &#8216;==&#8217;;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000} elsif(length($SplitedWord) % 3 == 2) {<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000$EncodedString .= &#8216;=&#8217;;<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000}<br \/>\n\u3000\u3000\u3000\u3000\u3000\u3000$EncodedString .= &#8216;?=&#8217;.&#8221;\\n &#8220;;<br \/>\n\u3000\u3000\u3000\u3000}<br \/>\n\u3000\u3000\u3000\u3000$EncodedString =~ s\/\\n $\/\/;<br \/>\n\u3000\u3000} else {<br \/>\n\u3000\u3000\u3000\u3000$EncodedString = $String;<br \/>\n\u3000\u3000}<br \/>\n\u3000\u3000return $EncodedString;<br \/>\n}<br \/>\n1;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java\u307f\u305f\u3044\u306b\u4f7f\u3048\u308b\u30e1\u30fc\u30eb\u9001\u4fe1pm\u3092\u7d44<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-70","post","type-post","status-publish","format-standard","hentry","category-perl"],"_links":{"self":[{"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/posts\/70","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/comments?post=70"}],"version-history":[{"count":0,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/posts\/70\/revisions"}],"wp:attachment":[{"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/media?parent=70"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/categories?post=70"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/deskplate.net\/blog\/wp-json\/wp\/v2\/tags?post=70"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}