<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
 <channel>
  <title>語句ログ - ニュース、プログラミング、システムトレードの用語解説</title>
  <link>https://59log.com/</link>
  <description>日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説</description>
  <lastBuildDate>Sun, 03 May 2026 14:49:42 +0900</lastBuildDate>
  <pubDate>Sun, 03 May 2026 14:49:42 +0900</pubDate>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>59Tracker 3.2</generator>
  <item>
    <title>メールフォーム（mailform）とは</title>
    <description>&lt;strong&gt;メールフォーム（mailform）とは&lt;/strong&gt;、ウェブサイトに設置された入力フォームからユーザーが入力した情報を、サーバー側でPerlやPHPなどで記述されたプログラムで処理し電子メールとして送信するもので、ユーザーに入力して欲しい情報を指定できるため問い合わせやアンケート、注文・予約等の受付などに広く利用されている。&lt;br /&gt;&lt;br /&gt;また、メールアドレスをウェブページに記載する必要がないため、迷惑メールやスパムメールを防ぐことができる。&lt;br /&gt;&lt;br /&gt;レンタルサーバー等で運用するホームページに導入する場合は、CGIとして提供されているメールフォームをWebサーバーに設置するか、無料または有料で提供されているレンタルメールフォームサービスを利用する方法がある。&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;メールフォームCGI・PHP&lt;/h3&gt;&lt;a href=&quot;http://www.synck.com/contents/download/cgi-perl/mailform.html&quot; target=&quot;_blank&quot;&gt;メールフォームCGI | ホームページ制作素材ダウンロード - Synck Graphica&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.kent-web.com/mail/postmail.html&quot; target=&quot;_blank&quot;&gt;POST-MAIL（フォームメール） : KENT-WEB CGI/Perl フリーソフト&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://pgd.jp/cgiscript.html&quot; target=&quot;_blank&quot;&gt;メールフォームCGI配布 商用フリー | PGD WORKS&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.d-ic.com/free/01.html&quot; target=&quot;_blank&quot;&gt;フリーCGI配布（無料）　メールフォーム&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.php-factory.net/mail/01.php&quot; target=&quot;_blank&quot;&gt;PHPメールフォーム多機能版　フリー（無料）｜PHP工房&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://magical-form.com/&quot; target=&quot;_blank&quot;&gt;魔法のメールフォーム Magical Form&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;レンタルメールフォーム&lt;/h3&gt;&lt;a href=&quot;http://www.formzu.com/&quot; target=&quot;_blank&quot;&gt;フォームズ－無料メールフォーム運用実績12年 1日10円で広告なしSSL対応&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://ezform.cc/&quot; target=&quot;_blank&quot;&gt;メールフォームが無料！・イージーフォーム&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://fm.sekkaku.net/&quot; target=&quot;_blank&quot;&gt;せっかくメールフォーム レンタルサービス&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://formmail.jp/&quot; target=&quot;_blank&quot;&gt;メールフォーム,注文フォーム,アンケート,メール送信 - フォームメール&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://ssl.kodama.com/ja/&quot; target=&quot;_blank&quot;&gt;無料でセキュアなメールフォーム Secure Mail&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://mailform.mface.jp/&quot; target=&quot;_blank&quot;&gt;Mfaceメールフォーム - 無料で使えるSSL標準搭載のレンタルフォーム&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://form.fc2.com/&quot; target=&quot;_blank&quot;&gt;FC2メールフォーム｜無料でオリジナルのメールフォームが作れる！&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.formman.com/&quot; target=&quot;_blank&quot;&gt;ふぉーむまん メールフォーム無料レンタル サービス ssl FormMan&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;メールフォームの設置方法の解説&lt;/h3&gt;&lt;a href=&quot;http://www.homepage-4u.com/middle/6.html&quot; target=&quot;_blank&quot;&gt;3日で作るホームページ中級偏・PHP、CGIメールフォームの設置法を解説&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://sasuke.main.jp/phpmaikinput.html&quot; target=&quot;_blank&quot;&gt;PHP メール送信処理、メールフォーム作成&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://support.google.com/drive/answer/87809?hl=ja&quot; target=&quot;_blank&quot;&gt;Google フォームを作成する&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4798035483/aaaaaaee-22/ref=nosim&quot;&gt;はじめての稼ぐホームページ作りのツボ 最新版 (ADVANCED MASTER SERIES)&lt;/a&gt;&lt;br /&gt;&lt;small&gt;秀和システム  著者：望月 高清  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4798035483/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/519yewePhRL.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4798035483/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2351#link&quot; target=&quot;_blank&quot;&gt;Link(6)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2351#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2351#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%A1%E3%83%BC%E3%83%AB%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0&quot; title=&quot;メールフォーム&quot;&gt;メールフォーム&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=sendmail&quot; title=&quot;sendmail&quot;&gt;sendmail&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%9A%E3%83%BC%E3%82%B8&quot; title=&quot;ホームページ&quot;&gt;ホームページ&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=CGI&quot; title=&quot;CGI&quot;&gt;CGI&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=PHP&quot; title=&quot;PHP&quot;&gt;PHP&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AB&quot; title=&quot;レンタル&quot;&gt;レンタル&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2351</link>
    <pubDate>Fri, 29 Nov 2013 11:21:26 +0900</pubDate>
  </item>
  <item>
    <title>YouTube動画のURLを正規表現で埋め込みコードに変換するためのPerlコード</title>
    <description>&lt;p&gt;掲示板などのスレッドやコメント欄に投稿されたYouTube動画のURLを埋め込みコードに変換する方法を、ネットで検索していろいろ調べましたが、YouTube動画のURLは、http://www.youtube.com/watch?v={VID}とhttp://youtu.be/{VID}という2種類の形式があるようで、イマイチうまくいきませんでした。&lt;/p&gt;&lt;p&gt;結局、以下のコードで埋め込みコードへの変換は出来ましたが、改良の余地がまだかなりありそうです。&lt;/p&gt;&lt;p&gt;sub&amp;nbsp;_url_convert&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$str&amp;nbsp;=&amp;nbsp;shift;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($str&amp;nbsp;=~&amp;nbsp;m/http:\/\/www\.youtube\.com\/watch\?v=([a-zA-Z0-9]+).*/i)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$vid&amp;nbsp;=&amp;nbsp;$1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$str&amp;nbsp;=~&amp;nbsp;s/(http:\/\/www\.youtube\.com\/watch.*)/&amp;lt;iframe&amp;nbsp;width=&amp;quot;480&amp;quot;&amp;nbsp;height=&amp;quot;360&amp;quot;&amp;nbsp;src=&amp;quot;http:\/\/www.youtube.com\/embed\/$vid?rel=0&amp;quot;&amp;nbsp;frameborder=&amp;quot;0&amp;quot;&amp;nbsp;allowfullscreen&amp;gt;&amp;lt;\/iframe&amp;gt;/g;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elsif&amp;nbsp;($str&amp;nbsp;=~&amp;nbsp;m/http:\/\/youtu\.be\/([-_a-zA-Z0-9]+)/i)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$vid&amp;nbsp;=&amp;nbsp;$1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$str&amp;nbsp;=~&amp;nbsp;s/(http:\/\/youtu\.be\/[-_a-zA-Z0-9]+)/&amp;lt;iframe&amp;nbsp;width=&amp;quot;480&amp;quot;&amp;nbsp;height=&amp;quot;360&amp;quot;&amp;nbsp;src=&amp;quot;http:\/\/www.youtube.com\/embed\/$vid?rel=0&amp;quot;&amp;nbsp;frameborder=&amp;quot;0&amp;quot;&amp;nbsp;allowfullscreen&amp;gt;&amp;lt;\/iframe&amp;gt;/g;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$str;&lt;br&gt;}&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4873114500/aaaaaaee-22/ref=nosim&quot;&gt;正規表現クックブック&lt;/a&gt;&lt;br /&gt;&lt;small&gt;オライリージャパン  著者：Jan Goyvaerts,Steven Levithan  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4873114500/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51v9IZgj%2BeL.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4873114500/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2316#link&quot; target=&quot;_blank&quot;&gt;Link(1)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2316#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2316#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=YouTube&quot; title=&quot;YouTube&quot;&gt;YouTube&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=Perl&quot; title=&quot;Perl&quot;&gt;Perl&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=URL&quot; title=&quot;URL&quot;&gt;URL&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF&quot; title=&quot;埋め込み&quot;&gt;埋め込み&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B3%E3%83%BC%E3%83%89&quot; title=&quot;コード&quot;&gt;コード&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE&quot; title=&quot;正規表現&quot;&gt;正規表現&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2316</link>
    <pubDate>Sat, 22 Jun 2013 01:35:47 +0900</pubDate>
  </item>
  <item>
    <title>ウェブページを1回だけリロード（再表示）する方法</title>
    <description>HTMLファイルのフォームからPerlのCGIでHTMLファイルを更新し、&lt;br&gt;&lt;br&gt;print &lt;span class=&quot;src_doublequotation&quot;&gt;&quot;Location: htmlファイルのURL&quot;&lt;/span&gt;, &lt;span class=&quot;src_doublequotation&quot;&gt;&quot;\n\n&quot;&lt;/span&gt;;&lt;br&gt;&lt;br&gt;でそのHTMLファイルを表示しても、更新前の古い状態で表示されてしまいます。&lt;br&gt;&lt;br&gt;だからといって、&lt;br&gt;&lt;br&gt;&lt;body onLoad=&quot;location.reload();&quot;&gt;&lt;br&gt;&lt;br&gt;という記述では、リロードの無限ループになってしまいます。&lt;br&gt;&lt;br&gt;以下のJavaScriptをHTMLファイルに追加することで1回だけリロードすることができるようです。&lt;br&gt;&lt;br&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;br&gt;&lt;!--&lt;br&gt;var __onload_flag = window.onload;&lt;br&gt;window.onload = function() {&lt;br&gt;    if (__onload_flag) {&lt;br&gt;        __onload_flag();&lt;br&gt;        location.reload();&lt;br&gt;    }&lt;br&gt;}&lt;br&gt;//--&gt;&lt;br&gt;&lt;/script&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2270#link&quot; target=&quot;_blank&quot;&gt;Link(1)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2270#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2270#comment&quot; target=&quot;_blank&quot;&gt;Comment(1)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&quot; title=&quot;プログラミング&quot;&gt;プログラミング&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%A6%E3%82%A7%E3%83%96&quot; title=&quot;ウェブ&quot;&gt;ウェブ&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%86%8D%E8%A1%A8%E7%A4%BA&quot; title=&quot;再表示&quot;&gt;再表示&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=JavaScript&quot; title=&quot;JavaScript&quot;&gt;JavaScript&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=HTML&quot; title=&quot;HTML&quot;&gt;HTML&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2270</link>
    <pubDate>Fri, 15 Feb 2013 13:47:02 +0900</pubDate>
  </item>
  <item>
    <title>[C言語]1バイト(8bit)の10進数を2進数の文字列に変換するコード</title>
    <description>&lt;p&gt;1バイト(8bit)の10進数を2進数の文字列に変換するコードのC言語版です。&lt;/p&gt;&lt;p&gt;C言語では、PerlやPHPなどのように2進文字列に変換してくれる便利な関数は関数はないので、ビット演算子を使ってビットのオン・オフを判定して、2進文字列を作成していくしかありません。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;src_preprocessor&quot;&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_preprocessor&quot;&gt;#include&amp;nbsp;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_keyword&quot;&gt;void&lt;/span&gt;&amp;nbsp;dec2bin(&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;src,&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*dest);&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_keyword&quot;&gt;const&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;buf_size&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;9&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;main(&lt;span class=&quot;src_keyword&quot;&gt;void&lt;/span&gt;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;buf[buf_size];&amp;nbsp;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;変換後の2進文字列を受け取るための領域&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;str1[]&amp;nbsp;=&amp;nbsp;&amp;quot;abcdefg&amp;quot;;&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;str1[]&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;あいうえお&amp;quot;&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*cp;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;num&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;1&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;for&lt;/span&gt;&amp;nbsp;(cp&amp;nbsp;=&amp;nbsp;str1;&amp;nbsp;*cp;&amp;nbsp;cp++)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;文字数分処理&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(buf,&amp;nbsp;&lt;span class=&quot;src_singlequotation&quot;&gt;'\0'&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;sizeof&lt;/span&gt;(buf));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dec2bin(*cp,&amp;nbsp;buf);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;%d:%s&amp;nbsp;(0x%02.2X)\n&amp;quot;&lt;/span&gt;,&amp;nbsp;num,&amp;nbsp;buf,&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0x000000f&lt;/span&gt;f&amp;nbsp;&amp;amp;&amp;nbsp;*cp);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;num++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;1Byte(8bit)の10進数を2進数の文字列に変換&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_keyword&quot;&gt;void&lt;/span&gt;&amp;nbsp;dec2bin(&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;src,&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*dest)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;const&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;bit_size&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;8&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;i;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;for&lt;/span&gt;&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;bit_size;&amp;nbsp;i++)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dest[i]&amp;nbsp;=&amp;nbsp;(&lt;span class=&quot;src_digit&quot;&gt;0x80&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;nbsp;src)&amp;nbsp;?&amp;nbsp;&lt;span class=&quot;src_singlequotation&quot;&gt;'1'&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span class=&quot;src_singlequotation&quot;&gt;'0'&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;src&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;1&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4797327901/aaaaaaee-22/ref=nosim&quot;&gt;解きながら学ぶC言語&lt;/a&gt;&lt;br /&gt;&lt;small&gt;ソフトバンククリエイティブ  著者：柴田 望洋,肘井 真一,高木 宏典,赤尾 浩  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4797327901/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/516WRDSAFQL.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4797327901/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2253#link&quot; target=&quot;_blank&quot;&gt;Link(6)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2253#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2253#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=C%E8%A8%80%E8%AA%9E&quot; title=&quot;C言語&quot;&gt;C言語&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB&quot; title=&quot;サンプル&quot;&gt;サンプル&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0&quot; title=&quot;プログラム&quot;&gt;プログラム&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B3%E3%83%BC%E3%83%89&quot; title=&quot;コード&quot;&gt;コード&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=2%E9%80%B2%E6%95%B0&quot; title=&quot;2進数&quot;&gt;2進数&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&quot; title=&quot;プログラミング&quot;&gt;プログラミング&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2253</link>
    <pubDate>Fri, 21 Dec 2012 17:23:17 +0900</pubDate>
  </item>
  <item>
    <title>[Perl]UTF-8でエンコードされた英数字の全角半角変換を行うコード</title>
    <description>&lt;p&gt;まずカタカナより比較的プログラミングしやすそうな英数字の全角半角変換から作成します。&lt;br&gt;&lt;br&gt;半角から全角への変換の処理手順は、&lt;br&gt;&lt;br&gt;・半角英数字の場合は、同じ全角英数字に置き換えて戻り値として返す文字列に連結&lt;br&gt;・それ以外の文字の場合はそのまま戻り値として返す文字列に連結&lt;br&gt;&lt;br&gt;また、全角から半角への変換の処理手順は、&lt;br&gt;&lt;br&gt;・全角英数字の場合は、同じ半角英数字に置き換えて戻り値として返す文字列に連結&lt;br&gt;・それ以外の文字の場合はそのまま戻り値として返す文字列に連結&lt;br&gt;&lt;br&gt;となります。&lt;/p&gt;&lt;p&gt;文字コードはそれぞれ以下の通りですので、これらに該当する文字があったら置き換えを行います。&lt;/p&gt;&lt;p&gt;半角数字:0 - 9&lt;br&gt;30 - 39&lt;br&gt;&lt;br&gt;全角数字:０ - ９&lt;br&gt;EFBC90 - EFBC99&lt;br&gt;2バイト目まではEFBC&lt;br&gt;&lt;br&gt;半角アルファベット大文字:A - Z&lt;br&gt;41 - 5A&lt;br&gt;&lt;br&gt;全角アルファベット大文字:Ａ - Ｚ&lt;br&gt;EFBCA1 - EFBCBA&lt;br&gt;2バイト目まではEFBC&lt;br&gt;&lt;br&gt;半角アルファベット小文字:a - z&lt;br&gt;61 - 7A&lt;br&gt;&lt;br&gt;全角アルファベット小文字:ａ - ｚ&lt;br&gt;EFBD80 - EFBD9A&lt;br&gt;2バイト目まではEFBD&lt;br&gt;&lt;/p&gt;&lt;p&gt;以下が英数字の半角から全角へ、全角から半角への変換を行うコード（プログラム）です。&lt;/p&gt;&lt;p&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use&amp;nbsp;strict;&lt;br&gt;use&amp;nbsp;warnings;&lt;br&gt;use&amp;nbsp;Encode;&lt;br&gt;&lt;br&gt;my&amp;nbsp;$hanAlnum&amp;nbsp;=&amp;nbsp;&amp;quot;ABCDEい12345あabcde&amp;quot;;&lt;br&gt;my&amp;nbsp;$zenAlnum&amp;nbsp;=&amp;nbsp;&amp;quot;ＡＢＣＤＥい１２３４５あａｂｃｄｅカ&amp;quot;;&lt;br&gt;&lt;br&gt;my&amp;nbsp;$zenstr&amp;nbsp;=&amp;nbsp;han2zen_alnum($hanAlnum);&lt;br&gt;Encode::from_to($hanAlnum,&amp;nbsp;'utf8',&amp;nbsp;'cp932');&lt;br&gt;Encode::from_to($zenstr,&amp;nbsp;'utf8',&amp;nbsp;'cp932');&lt;br&gt;print&amp;nbsp;&amp;quot;$hanAlnum&amp;nbsp;---&amp;gt;&amp;nbsp;$zenstr\n&amp;quot;;&lt;br&gt;&lt;br&gt;my&amp;nbsp;$hanstr&amp;nbsp;=&amp;nbsp;zen2han_alnum($zenAlnum);&lt;br&gt;Encode::from_to($zenAlnum,&amp;nbsp;'utf8',&amp;nbsp;'cp932');&lt;br&gt;Encode::from_to($hanstr,&amp;nbsp;'utf8',&amp;nbsp;'cp932');&lt;br&gt;print&amp;nbsp;&amp;quot;$zenAlnum&amp;nbsp;---&amp;gt;&amp;nbsp;$hanstr\n&amp;quot;;&lt;br&gt;&lt;br&gt;#&amp;nbsp;UTF-8でエンコードされた半角英数字を全角英数字に変換する&lt;br&gt;sub&amp;nbsp;han2zen_alnum&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;($src)&amp;nbsp;=&amp;nbsp;@_;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$srclen&amp;nbsp;=&amp;nbsp;length($src);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$pos&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$dest&amp;nbsp;=&amp;nbsp;'';&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;($pos&amp;nbsp;&amp;lt;&amp;nbsp;$srclen)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code&amp;nbsp;=&amp;nbsp;ord&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;1);&amp;nbsp;#&amp;nbsp;先頭のASCIIコード値を取得&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$bytelen&amp;nbsp;=&amp;nbsp;_bytesize($code);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$lastbyte&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$bytechar&amp;nbsp;=&amp;nbsp;'';&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$flagged_utf8&amp;nbsp;=&amp;nbsp;'';&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($code&amp;nbsp;&amp;gt;=&amp;nbsp;0x30&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;$code&amp;nbsp;&amp;lt;=&amp;nbsp;0x39)&amp;nbsp;{&amp;nbsp;#&amp;nbsp;数字&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$lastbyte&amp;nbsp;=&amp;nbsp;0x90&amp;nbsp;+&amp;nbsp;($code&amp;nbsp;-&amp;nbsp;0x30);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$bytechar&amp;nbsp;=&amp;nbsp;pack(&amp;quot;C3&amp;quot;,&amp;nbsp;0xEF,&amp;nbsp;0xBC,&amp;nbsp;$lastbyte);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dest&amp;nbsp;.=&amp;nbsp;$bytechar;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elsif&amp;nbsp;($code&amp;nbsp;&amp;gt;=&amp;nbsp;0x41&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;$code&amp;nbsp;&amp;lt;=&amp;nbsp;0x5A)&amp;nbsp;{&amp;nbsp;#&amp;nbsp;大文字英字&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$lastbyte&amp;nbsp;=&amp;nbsp;0xA1&amp;nbsp;+&amp;nbsp;($code&amp;nbsp;-&amp;nbsp;0x41);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$bytechar&amp;nbsp;=&amp;nbsp;pack(&amp;quot;C3&amp;quot;,&amp;nbsp;0xEF,&amp;nbsp;0xBC,&amp;nbsp;$lastbyte);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dest&amp;nbsp;.=&amp;nbsp;$bytechar;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elsif&amp;nbsp;($code&amp;nbsp;&amp;gt;=&amp;nbsp;0x61&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;$code&amp;nbsp;&amp;lt;=&amp;nbsp;0x7A)&amp;nbsp;{&amp;nbsp;#&amp;nbsp;小文字英字&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$lastbyte&amp;nbsp;=&amp;nbsp;0x81&amp;nbsp;+&amp;nbsp;($code&amp;nbsp;-&amp;nbsp;0x61);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$bytechar&amp;nbsp;=&amp;nbsp;pack(&amp;quot;C3&amp;quot;,&amp;nbsp;0xEF,&amp;nbsp;0xBD,&amp;nbsp;$lastbyte);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dest&amp;nbsp;.=&amp;nbsp;$bytechar;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dest&amp;nbsp;.=&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;$bytelen);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$pos&amp;nbsp;+=&amp;nbsp;$bytelen;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$dest;&lt;br&gt;}&lt;br&gt;&lt;br&gt;#&amp;nbsp;UTF-8でエンコードされた全角英数字を半角英数字に変換する&lt;br&gt;sub&amp;nbsp;zen2han_alnum&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;($src)&amp;nbsp;=&amp;nbsp;@_;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$srclen&amp;nbsp;=&amp;nbsp;length($src);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$pos&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$dest&amp;nbsp;=&amp;nbsp;'';&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;($pos&amp;nbsp;&amp;lt;&amp;nbsp;$srclen)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code&amp;nbsp;=&amp;nbsp;ord&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;1);&amp;nbsp;#&amp;nbsp;先頭のASCIIコード値を取得&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$bytelen&amp;nbsp;=&amp;nbsp;_bytesize($code);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$hit&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($code&amp;nbsp;==&amp;nbsp;0xEF)&amp;nbsp;{&amp;nbsp;#&amp;nbsp;全角英数の場合は1バイト目がEF&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code2&amp;nbsp;=&amp;nbsp;ord&amp;nbsp;substr($src,&amp;nbsp;$pos&amp;nbsp;+&amp;nbsp;1,&amp;nbsp;1);&amp;nbsp;&amp;nbsp;#&amp;nbsp;2バイト目&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code3&amp;nbsp;=&amp;nbsp;ord&amp;nbsp;substr($src,&amp;nbsp;$pos&amp;nbsp;+&amp;nbsp;2,&amp;nbsp;1);&amp;nbsp;&amp;nbsp;#&amp;nbsp;3バイト目&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($code2&amp;nbsp;==&amp;nbsp;0xBC)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($code3&amp;nbsp;&amp;gt;=&amp;nbsp;0x90&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;$code3&amp;nbsp;&amp;lt;=&amp;nbsp;0x99)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dest&amp;nbsp;.=&amp;nbsp;chr(0x30&amp;nbsp;+&amp;nbsp;($code3&amp;nbsp;-&amp;nbsp;0x90));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$hit&amp;nbsp;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elsif&amp;nbsp;($code3&amp;nbsp;&amp;gt;=&amp;nbsp;0xA1&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;$code3&amp;nbsp;&amp;lt;=&amp;nbsp;0xBA)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dest&amp;nbsp;.=&amp;nbsp;chr(0x41&amp;nbsp;+&amp;nbsp;($code3&amp;nbsp;-&amp;nbsp;0xA1));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$hit&amp;nbsp;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elsif&amp;nbsp;($code2&amp;nbsp;==&amp;nbsp;0xBD)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($code3&amp;nbsp;&amp;gt;=&amp;nbsp;0x80&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;$code3&amp;nbsp;&amp;lt;=&amp;nbsp;0x9A)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dest&amp;nbsp;.=&amp;nbsp;chr(0x61&amp;nbsp;+&amp;nbsp;($code3&amp;nbsp;-&amp;nbsp;0x80));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$hit&amp;nbsp;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(!$hit)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dest&amp;nbsp;.=&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;$bytelen);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$pos&amp;nbsp;+=&amp;nbsp;$bytelen;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$dest;&lt;br&gt;}&lt;br&gt;&lt;br&gt;#&amp;nbsp;文字のバイト長を求める&lt;br&gt;sub&amp;nbsp;_bytesize&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code&amp;nbsp;=&amp;nbsp;shift;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$size&amp;nbsp;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code)&amp;nbsp;{&amp;nbsp;#&amp;nbsp;1バイト文字以外&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;my&amp;nbsp;$i&amp;nbsp;(2&amp;nbsp;..&amp;nbsp;8)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$size++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;last&amp;nbsp;if&amp;nbsp;(!(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$size;&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2250#link&quot; target=&quot;_blank&quot;&gt;Link(1)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2250#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2250#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=Perl&quot; title=&quot;Perl&quot;&gt;Perl&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%85%A8%E8%A7%92&quot; title=&quot;全角&quot;&gt;全角&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%8D%8A%E8%A7%92&quot; title=&quot;半角&quot;&gt;半角&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%A4%89%E6%8F%9B&quot; title=&quot;変換&quot;&gt;変換&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E8%A1%A8%E7%A4%BA&quot; title=&quot;表示&quot;&gt;表示&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%97%A5%E6%9C%AC%E8%AA%9E&quot; title=&quot;日本語&quot;&gt;日本語&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2250</link>
    <pubDate>Wed, 19 Dec 2012 16:54:42 +0900</pubDate>
  </item>
  <item>
    <title>[Perl]UTF-8でエンコードされた文字の文字コードを表示するプログラム</title>
    <description>&lt;p&gt;Unicodeの文字コード表によるとUTF-8の半角英数、全角英数、半角カナ、全角カナの文字コードは以下のようになるようです。英数字の場合は半角と全角の文字がそれぞれ対応していますが、カタカナの場合は半角と全角では文字の数が違うようです。&lt;/p&gt;&lt;p&gt;半角数字:0&amp;nbsp;-&amp;nbsp;9&lt;br&gt;30&amp;nbsp;-&amp;nbsp;39&lt;br&gt;&lt;br&gt;全角数字&lt;br&gt;EFBC90&amp;nbsp;-&amp;nbsp;EFBC99&lt;br&gt;2バイト目まではEFBC&lt;br&gt;&lt;br&gt;半角アルファベット大文字:A&amp;nbsp;-&amp;nbsp;Z&lt;br&gt;41&amp;nbsp;-&amp;nbsp;5A&lt;br&gt;&lt;br&gt;全角アルファベット大文字:Ａ&amp;nbsp;-&amp;nbsp;Ｚ&lt;br&gt;EFBCA1&amp;nbsp;-&amp;nbsp;EFBCBA&lt;br&gt;2バイト目まではEFBC&lt;br&gt;&lt;br&gt;半角アルファベット小文字:a&amp;nbsp;-&amp;nbsp;z&lt;br&gt;61&amp;nbsp;-&amp;nbsp;7A&lt;br&gt;&lt;br&gt;全角アルファベット小文字:ａ&amp;nbsp;-&amp;nbsp;ｚ&lt;br&gt;EFBD80&amp;nbsp;-&amp;nbsp;EFBD9A&lt;br&gt;2バイト目まではEFBD&lt;br&gt;&lt;br&gt;半角カナ（JISカナ）&lt;br&gt;EFBDA1&amp;nbsp;-&amp;nbsp;EFBE9F&lt;br&gt;1バイト目がEFで2バイト目、3バイト目がBDA1&amp;nbsp;-&amp;nbsp;BE9Fの範囲&lt;br&gt;&lt;br&gt;全角カタカナ&lt;br&gt;E38299&amp;nbsp;-&amp;nbsp;E383BF&lt;br&gt;1バイト目がE3で2バイト目、3バイト目が82A1&amp;nbsp;-&amp;nbsp;83BFの範囲&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Unicode対応 文字コード表&lt;/b&gt;&lt;br&gt;&lt;a href=&quot;http://ash.jp/code/unitbl1.htm&quot; target=&quot;_blank&quot;&gt;http://ash.jp/code/unitbl1.htm&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://ash.jp/code/unitbl21.htm&quot; target=&quot;_blank&quot;&gt;http://ash.jp/code/unitbl21.htm&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;動作確認用にまずUTF-8の文字コードを表示するプログラムを作成します。&lt;/p&gt;&lt;p&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use&amp;nbsp;strict;&lt;br&gt;use&amp;nbsp;warnings;&lt;br&gt;use&amp;nbsp;Encode;&lt;br&gt;&lt;br&gt;my&amp;nbsp;$hanAlnum&amp;nbsp;=&amp;nbsp;&amp;quot;ABCDE12345abcde&amp;quot;;&lt;br&gt;my&amp;nbsp;$zenAlnum&amp;nbsp;=&amp;nbsp;&amp;quot;ＡＢＣＤＥ１２３４５ａｂｃｄｅ&amp;quot;;&lt;br&gt;my&amp;nbsp;$hanKana&amp;nbsp;=&amp;nbsp;&amp;quot;ｱｲｳｴｵ&amp;quot;;&lt;br&gt;my&amp;nbsp;$zenKana&amp;nbsp;=&amp;nbsp;&amp;quot;アイウエオ&amp;quot;;&lt;br&gt;&lt;br&gt;print_charcode($hanAlnum);&lt;br&gt;print&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print_charcode($zenAlnum);&lt;br&gt;print&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print_charcode($hanKana);&lt;br&gt;print&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print_charcode($zenKana);&lt;br&gt;print&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;#&amp;nbsp;UTF-8でエンコードされた文字列の文字コードを表示する&lt;br&gt;sub&amp;nbsp;print_charcode&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;($src)&amp;nbsp;=&amp;nbsp;@_;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$srclen&amp;nbsp;=&amp;nbsp;length($src);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$pos&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;($pos&amp;nbsp;&amp;lt;&amp;nbsp;$srclen)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code&amp;nbsp;=&amp;nbsp;ord&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;1);&amp;nbsp;#&amp;nbsp;先頭のASCIIコード値を取得&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$bytelen&amp;nbsp;=&amp;nbsp;_bytesize($code);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$srcchar&amp;nbsp;=&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;$bytelen);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$codestr&amp;nbsp;=&amp;nbsp;sprintf(&amp;quot;%2.2X&amp;nbsp;&amp;quot;,&amp;nbsp;$code);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($bytelen&amp;nbsp;&amp;gt;&amp;nbsp;1)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$times&amp;nbsp;=&amp;nbsp;$bytelen&amp;nbsp;-&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;my&amp;nbsp;$i&amp;nbsp;(1&amp;nbsp;..&amp;nbsp;$times)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$charcode&amp;nbsp;=&amp;nbsp;ord&amp;nbsp;substr($src,&amp;nbsp;$pos&amp;nbsp;+&amp;nbsp;$i,&amp;nbsp;1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$codestr&amp;nbsp;.=&amp;nbsp;sprintf(&amp;quot;%2.2X&amp;nbsp;&amp;quot;,&amp;nbsp;$charcode);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Windowsで表示するのでcp932（シフトJIS）に変換&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Encode::from_to($srcchar,&amp;nbsp;'utf8',&amp;nbsp;'cp932');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print&amp;nbsp;&amp;quot;$srcchar&amp;nbsp;:&amp;nbsp;$codestr\n&amp;quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$pos&amp;nbsp;+=&amp;nbsp;$bytelen;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;#&amp;nbsp;文字のバイト長を求める&lt;br&gt;sub&amp;nbsp;_bytesize&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code&amp;nbsp;=&amp;nbsp;shift;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$size&amp;nbsp;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code)&amp;nbsp;{&amp;nbsp;#&amp;nbsp;1バイト文字以外&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;my&amp;nbsp;$i&amp;nbsp;(2&amp;nbsp;..&amp;nbsp;8)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$size++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;last&amp;nbsp;if&amp;nbsp;(!(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$size;&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4873113148/aaaaaaee-22/ref=nosim&quot;&gt;Perl Hacks ―プロが教えるテクニック &amp; ツール101選&lt;/a&gt;&lt;br /&gt;&lt;small&gt;オライリー・ジャパン  著者：chromatic,Damian Conway,Curtis &quot;Ovid&quot; Poe  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4873113148/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51aB9g91ENL.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4873113148/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2248#link&quot; target=&quot;_blank&quot;&gt;Link(1)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2248#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2248#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=Perl&quot; title=&quot;Perl&quot;&gt;Perl&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%85%A8%E8%A7%92&quot; title=&quot;全角&quot;&gt;全角&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%8D%8A%E8%A7%92&quot; title=&quot;半角&quot;&gt;半角&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89&quot; title=&quot;文字コード&quot;&gt;文字コード&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E8%A1%A8%E7%A4%BA&quot; title=&quot;表示&quot;&gt;表示&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%97%A5%E6%9C%AC%E8%AA%9E&quot; title=&quot;日本語&quot;&gt;日本語&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2248</link>
    <pubDate>Mon, 17 Dec 2012 00:25:00 +0900</pubDate>
  </item>
  <item>
    <title>Perlで全角半角変換を行う方法</title>
    <description>日本語の文章では半角の英数字と全角の英数字、また、半角のカタカナと全角のカタカナが混在していることがよくあります。意味は半角でも全角でも同じですので、コンピュータで処理する場合はどちらかに統一してから処理したいところです。&lt;br /&gt;&lt;br /&gt;Perlで全角半角変換を行う主な方法としては、&lt;br /&gt;&lt;br /&gt;・標準モジュールのEncode.pmを使う&lt;br /&gt;・Unicode::Japaneseモジュールを使う&lt;br /&gt;・全角半角の変換に特化したLingua::JA::Regular::Unicodeモジュールを使う&lt;br /&gt;&lt;br /&gt;などがあります。&lt;br /&gt;&lt;br /&gt;Encode.pmは標準モジュールですので比較的使いやすいですが、euc-jp以外の文字エンコードの場合はeuc-jpに変換する必要があります。&lt;br /&gt;&lt;br /&gt;Unicode::Japaneseモジュールは、現状では一番使いやすいと思われますが、標準モジュールではないのでレンタルサーバーで動かすWebアプリケーションではちょっと使いにくい面もあります。&lt;br /&gt;&lt;br /&gt;Lingua::JA::Regular::Unicodeは、全角半角の変換に特化したモジュールですので非常に軽量ですが、全角半角の変換以外の処理を考えるとuse utf8;しないと動作しないというのはかなり面倒です。&lt;br /&gt;&lt;br /&gt;これらのモジュールを使った全角半角の変換のコードについては、以下のブログ記事などに記述されています。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://perl.g.hatena.ne.jp/Cress/20081023/1224757345&quot; target=&quot;_blank&quot;&gt;Encodeで全角半角変換&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.serendip.ws/archives/2185&quot; target=&quot;_blank&quot;&gt;Perl で半角カナと全角カナの変換をする : Serendip - Webデザイン・プログラミング&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.livedoor.jp/dankogai/archives/51220946.html&quot; target=&quot;_blank&quot;&gt;perl - で全角半角変換をモダンに行う&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;しかし、いずれの方法もそれぞれ若干使いにくい面があるので、モジュールを使わずに自力で全角半角変換を行う方法を考えたいと思います。&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/477414164X/aaaaaaee-22/ref=nosim&quot;&gt;プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)&lt;/a&gt;&lt;br /&gt;&lt;small&gt;技術評論社  著者：矢野 啓介  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/477414164X/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51b7R1hZL-L.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/477414164X/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2247#link&quot; target=&quot;_blank&quot;&gt;Link(4)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2247#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2247#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=Perl&quot; title=&quot;Perl&quot;&gt;Perl&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%85%A8%E8%A7%92&quot; title=&quot;全角&quot;&gt;全角&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%8D%8A%E8%A7%92&quot; title=&quot;半角&quot;&gt;半角&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%A4%89%E6%8F%9B&quot; title=&quot;変換&quot;&gt;変換&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB&quot; title=&quot;モジュール&quot;&gt;モジュール&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%97%A5%E6%9C%AC%E8%AA%9E&quot; title=&quot;日本語&quot;&gt;日本語&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2247</link>
    <pubDate>Fri, 14 Dec 2012 23:52:52 +0900</pubDate>
  </item>
  <item>
    <title>[Perl]UTF-8でエンコードされた文字列の部分文字列を取り出すコード</title>
    <description>&lt;p&gt;Perlのsubstr関数ではバイト単位の操作になるので、漢字、ひらがな、カタカナなどの全角文字を文字数で指定して部分文字列を取り出すことができません。それでは不都合なことも多いので、半角英数も全角文字も1文字として部分文字列を取り出すことができる関数を作成します。&lt;/p&gt;&lt;p&gt;以下はそのコードです。&lt;a href=&quot;http://59log.com/detail2243.html&quot; target=&quot;_blank&quot;&gt;[Perl]UTF-8でエンコードされた文字列の文字数を取得するコード&lt;/a&gt;と同様に、文字の1バイト目のビットの状態を調べることによってその文字が何バイト文字を判定しています。&lt;/p&gt;&lt;p&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use&amp;nbsp;strict;&lt;br&gt;use&amp;nbsp;warnings;&lt;br&gt;&lt;br&gt;my&amp;nbsp;$testStr&amp;nbsp;=&amp;nbsp;&amp;quot;ABCDEFGあいうえおアイウエオ愛夢佐々木&amp;quot;;&lt;br&gt;&lt;br&gt;print&amp;nbsp;&amp;quot;substr_utf8($testStr,&amp;nbsp;0,&amp;nbsp;5)&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;nbsp;.&amp;nbsp;substr_utf8($testStr,&amp;nbsp;0,&amp;nbsp;5),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;substr_utf8($testStr,&amp;nbsp;3,&amp;nbsp;3)&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;nbsp;.&amp;nbsp;substr_utf8($testStr,&amp;nbsp;3,&amp;nbsp;3),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;substr_utf8($testStr,&amp;nbsp;10,&amp;nbsp;4)&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;nbsp;.&amp;nbsp;substr_utf8($testStr,&amp;nbsp;10,&amp;nbsp;4),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;substr_utf8($testStr,&amp;nbsp;13,&amp;nbsp;5)&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;nbsp;.&amp;nbsp;substr_utf8($testStr,&amp;nbsp;13,&amp;nbsp;5),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;substr_utf8($testStr,&amp;nbsp;13)&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;nbsp;.&amp;nbsp;substr_utf8($testStr,&amp;nbsp;13),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;exit;&lt;br&gt;&lt;br&gt;#&amp;nbsp;UTF-8でエンコードされた文字列の部分文字列を取り出す&lt;br&gt;#&amp;nbsp;substr_utf8&amp;nbsp;(文字列式,&amp;nbsp;オフセット[,&amp;nbsp;長さ]）長さを指定しなかった場合は最後まで&lt;br&gt;sub&amp;nbsp;substr_utf8&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;($src,&amp;nbsp;$offset,&amp;nbsp;$len)&amp;nbsp;=&amp;nbsp;@_;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$srclen&amp;nbsp;=&amp;nbsp;length($src);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$pos&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$count&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$dest&amp;nbsp;=&amp;nbsp;'';&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;($pos&amp;nbsp;&amp;lt;&amp;nbsp;$srclen)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code&amp;nbsp;=&amp;nbsp;ord&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;1);&amp;nbsp;#&amp;nbsp;先頭のASCIIコード値を取得&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$bytelen&amp;nbsp;=&amp;nbsp;_bytesize($code);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(defined($len)){&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($count&amp;nbsp;&amp;gt;=&amp;nbsp;$offset&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;$count&amp;nbsp;&amp;lt;&amp;nbsp;($offset&amp;nbsp;+&amp;nbsp;$len))&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dest&amp;nbsp;.=&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;$bytelen);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&amp;nbsp;#&amp;nbsp;長さ指定なし&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($count&amp;nbsp;&amp;gt;=&amp;nbsp;$offset)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dest&amp;nbsp;.=&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;$bytelen);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$pos&amp;nbsp;+=&amp;nbsp;$bytelen;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$count++;&amp;nbsp;#&amp;nbsp;文字数をカウント&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$dest;&lt;br&gt;}&lt;br&gt;&lt;br&gt;#&amp;nbsp;文字のバイト長を求める&lt;br&gt;sub&amp;nbsp;_bytesize&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code&amp;nbsp;=&amp;nbsp;shift;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$size&amp;nbsp;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code)&amp;nbsp;{&amp;nbsp;#&amp;nbsp;1バイト文字以外&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;my&amp;nbsp;$i&amp;nbsp;(2&amp;nbsp;..&amp;nbsp;8)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$size++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;last&amp;nbsp;if&amp;nbsp;(!(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$size;&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;p&gt;substr_utf8関数では、substr関数を使用して1バイト目のASCIIコード値を取得し、_bytesize関数を呼び出して文字のバイト数を求め、その文字がパラメータで指定された範囲の場合は、戻り値として返す文字列に連結し、そうでなかった場合は文字数のカウントアップのみ行なっています。&lt;/p&gt;&lt;p&gt;_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定し戻り値として返しています。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774150258/aaaaaaee-22/ref=nosim&quot;&gt;もっと自在にサーバを使い倒す 業務に役立つPerl (Software Design ｐlus)&lt;/a&gt;&lt;br /&gt;&lt;small&gt;技術評論社  著者：木本 裕紀  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774150258/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51d4T7m8NzL.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774150258/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2244#link&quot; target=&quot;_blank&quot;&gt;Link(4)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2244#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2244#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=Perl&quot; title=&quot;Perl&quot;&gt;Perl&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E9%83%A8%E5%88%86%E6%96%87%E5%AD%97%E5%88%97&quot; title=&quot;部分文字列&quot;&gt;部分文字列&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB&quot; title=&quot;サンプル&quot;&gt;サンプル&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0&quot; title=&quot;プログラム&quot;&gt;プログラム&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B3%E3%83%BC%E3%83%89&quot; title=&quot;コード&quot;&gt;コード&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2244</link>
    <pubDate>Thu, 13 Dec 2012 10:51:25 +0900</pubDate>
  </item>
  <item>
    <title>[Perl]UTF-8でエンコードされた文字列の文字数を取得するコード</title>
    <description>&lt;p&gt;Perlのlength関数ではバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。&lt;/p&gt;&lt;p&gt;ブログなどのアプリケーションのテキスト処理ではそれでは不都合な場合もことも多いので、半角英数も全角文字（漢字、ひらがな、カタカナなど）も1文字としてカウントする関数を作成することにします。&lt;/p&gt;&lt;p&gt;UTF-8では、&lt;br&gt;&lt;br&gt;1バイト目の先頭ビットが0の場合は1バイト文字&lt;br&gt;1バイト目の先頭から3ビットが110の場合は2バイト文字&lt;br&gt;1バイト目の先頭から4ビットが1110の場合は3バイト文字&lt;br&gt;1バイト目の先頭から5ビットが11110の場合は4バイト文字&lt;br&gt;1バイト目の先頭から6ビットが111110の場合は5バイト文字&lt;br&gt;1バイト目の先頭から7ビットが1111110の場合は2バイト文字&lt;br&gt;&lt;br&gt;という仕様ですので、1バイト目のビットの状態を調べることによって、その文字が何バイトかを調べることができます。&lt;br&gt;&lt;/p&gt;&lt;p&gt;以下のコードでは、この仕様にもとづいて全角文字を含む文字列の文字数を取得しています。&lt;/p&gt;&lt;p&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use&amp;nbsp;strict;&lt;br&gt;use&amp;nbsp;warnings;&lt;br&gt;&lt;br&gt;my&amp;nbsp;$testAscii&amp;nbsp;=&amp;nbsp;&amp;quot;ABCDEFG&amp;quot;;&lt;br&gt;my&amp;nbsp;$testHira&amp;nbsp;&amp;nbsp;=&amp;nbsp;&amp;quot;あいうえお&amp;quot;;&lt;br&gt;my&amp;nbsp;$testKata&amp;nbsp;&amp;nbsp;=&amp;nbsp;&amp;quot;アイウエ&amp;quot;;&lt;br&gt;my&amp;nbsp;$testKanji&amp;nbsp;=&amp;nbsp;&amp;quot;愛々木&amp;quot;;&lt;br&gt;my&amp;nbsp;$testAll&amp;nbsp;=&amp;nbsp;&amp;quot;ABCDEFGあいうえおアイウエオ愛夢佐々木&amp;quot;;&lt;br&gt;&lt;br&gt;print&amp;nbsp;&amp;quot;length($testAscii)&amp;nbsp;=&amp;nbsp;&amp;quot;.length($testAscii),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;strlen_utf8($testAscii)&amp;nbsp;=&amp;nbsp;&amp;quot;.strlen_utf8($testAscii),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print&amp;nbsp;&amp;quot;length($testHira)&amp;nbsp;=&amp;nbsp;&amp;quot;.length($testHira),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;strlen_utf8($testHira)&amp;nbsp;=&amp;nbsp;&amp;quot;.strlen_utf8($testHira),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print&amp;nbsp;&amp;quot;length($testKata)&amp;nbsp;=&amp;nbsp;&amp;quot;.length($testKata),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;strlen_utf8($testKata)&amp;nbsp;=&amp;nbsp;&amp;quot;.strlen_utf8($testKata),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print&amp;nbsp;&amp;quot;length($testKanji)&amp;nbsp;=&amp;nbsp;&amp;quot;.length($testKanji),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;strlen_utf8($testKanji)&amp;nbsp;=&amp;nbsp;&amp;quot;.strlen_utf8($testKanji),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print&amp;nbsp;&amp;quot;length($testAll)&amp;nbsp;=&amp;nbsp;&amp;quot;.length($testAll),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;strlen_utf8($testAll)&amp;nbsp;=&amp;nbsp;&amp;quot;.strlen_utf8($testAll),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;exit;&lt;br&gt;&lt;br&gt;#&amp;nbsp;UTF-8でエンコードされた文字列の文字数を取得する。&lt;br&gt;sub&amp;nbsp;strlen_utf8&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;($text)&amp;nbsp;=&amp;nbsp;@_;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$textlen&amp;nbsp;=&amp;nbsp;length($text);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$pos&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$count&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;($pos&amp;nbsp;&amp;lt;&amp;nbsp;$textlen)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code&amp;nbsp;=&amp;nbsp;ord&amp;nbsp;substr($text,&amp;nbsp;$pos,&amp;nbsp;1);&amp;nbsp;#&amp;nbsp;先頭のASCIIコード値を取得&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$bytelen&amp;nbsp;=&amp;nbsp;_bytesize($code);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$pos&amp;nbsp;+=&amp;nbsp;$bytelen;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$count++;&amp;nbsp;#&amp;nbsp;文字数をカウント&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$count;&lt;br&gt;}&lt;br&gt;&lt;br&gt;#&amp;nbsp;文字のバイト長を求める&lt;br&gt;sub&amp;nbsp;_bytesize&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;($code)&amp;nbsp;=&amp;nbsp;@_;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$size&amp;nbsp;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code)&amp;nbsp;{&amp;nbsp;#&amp;nbsp;1バイト文字以外&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$size++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;my&amp;nbsp;$i&amp;nbsp;(2&amp;nbsp;..&amp;nbsp;8)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;last&amp;nbsp;if&amp;nbsp;(!(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$size++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$size;&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;p&gt;strlen_utf8関数では、substr関数を使用して1バイト目のASCIIコード値を取得し、_bytesize関数を呼び出して文字のバイト数を求め、1文字分の処理を行うたびに文字数をカウントアップしています。&lt;/p&gt;&lt;p&gt;_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定し戻り値として返しています。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774145386/aaaaaaee-22/ref=nosim&quot;&gt;ゼロからわかる Perl言語超入門&lt;/a&gt;&lt;br /&gt;&lt;small&gt;技術評論社  著者：高橋 順子  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774145386/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/41cLYQHtnZL.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774145386/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2243#link&quot; target=&quot;_blank&quot;&gt;Link(3)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2243#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2243#comment&quot; target=&quot;_blank&quot;&gt;Comment(1)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=Perl&quot; title=&quot;Perl&quot;&gt;Perl&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%96%87%E5%AD%97%E6%95%B0&quot; title=&quot;文字数&quot;&gt;文字数&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB&quot; title=&quot;サンプル&quot;&gt;サンプル&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0&quot; title=&quot;プログラム&quot;&gt;プログラム&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B3%E3%83%BC%E3%83%89&quot; title=&quot;コード&quot;&gt;コード&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2243</link>
    <pubDate>Wed, 12 Dec 2012 11:56:21 +0900</pubDate>
  </item>
  <item>
    <title>[PHP]10進数を2進文字列に変換するコード</title>
    <description>&lt;p&gt;PHPの場合は、ズバリ10進数を2進文字列に変換できるdecbin関数があるので、decbin関数を使用すればいいのですが、もちろん、&lt;a href=&quot;http://59log.com/detail2239.html&quot;&gt;Perlの場合&lt;/a&gt;と同様にビット演算で2進文字列に変換することもできます。以下は、そのサンプルコードです。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;src_metakeyword&quot;&gt;&amp;lt;?php&lt;br&gt;&lt;br&gt;//&amp;nbsp;'A'のアスキーコード値を取得&lt;br&gt;$asciicode&amp;nbsp;=&amp;nbsp;ord('A');&lt;br&gt;&lt;br&gt;//&amp;nbsp;PHPのdecbin関数で2進文字列に変換し、sprintfで整形&lt;br&gt;$binarystr&amp;nbsp;=&amp;nbsp;sprintf(&amp;quot;%08.8s&amp;quot;,&amp;nbsp;decbin($asciicode));&lt;br&gt;print&amp;nbsp;$binarystr&amp;nbsp;.&amp;nbsp;&amp;quot;&amp;nbsp;(1)\n&amp;quot;;&amp;nbsp;//&amp;nbsp;for&amp;nbsp;debug&lt;br&gt;&lt;br&gt;//&amp;nbsp;ビット演算で2進文字列に変換&lt;br&gt;$binarystr&amp;nbsp;=&amp;nbsp;_binstr($asciicode);&lt;br&gt;print&amp;nbsp;$binarystr&amp;nbsp;.&amp;nbsp;&amp;quot;&amp;nbsp;(2)\n&amp;quot;;&amp;nbsp;//&amp;nbsp;for&amp;nbsp;debug&lt;br&gt;&lt;br&gt;function&amp;nbsp;_binstr($code)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$str&amp;nbsp;=&amp;nbsp;'';&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;($i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;$i&amp;nbsp;&amp;lt;&amp;nbsp;8;&amp;nbsp;$i++)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$str&amp;nbsp;.=&amp;nbsp;(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code)&amp;nbsp;?&amp;nbsp;'1'&amp;nbsp;:&amp;nbsp;'0';&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$str;&amp;nbsp;&lt;br&gt;}&lt;br&gt;?&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;このスクリプトをコマンドラインで実行すると次のように表示されます。&lt;/p&gt;&lt;p&gt;C:\xampp\htdocs\sample&gt;\xampp\php\php binstr.php&lt;br&gt;01000001 (1)&lt;br&gt;01000001 (2)&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4797363185/aaaaaaee-22/ref=nosim&quot;&gt;PHPハンドブック (ハンドブックシリーズ)&lt;/a&gt;&lt;br /&gt;&lt;small&gt;ソフトバンククリエイティブ  著者：柏岡 秀男  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4797363185/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/41K7Q87RVIL.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4797363185/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2242#link&quot; target=&quot;_blank&quot;&gt;Link(1)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2242#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2242#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=PHP&quot; title=&quot;PHP&quot;&gt;PHP&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=2%E9%80%B2%E6%95%B0&quot; title=&quot;2進数&quot;&gt;2進数&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%A4%89%E6%8F%9B&quot; title=&quot;変換&quot;&gt;変換&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB&quot; title=&quot;サンプル&quot;&gt;サンプル&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0&quot; title=&quot;プログラム&quot;&gt;プログラム&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B3%E3%83%BC%E3%83%89&quot; title=&quot;コード&quot;&gt;コード&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2242</link>
    <pubDate>Tue, 11 Dec 2012 19:33:29 +0900</pubDate>
  </item>

 </channel>
</rss>
