<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://www11.atwiki.jp/pochi/">
    <title>pochy9n at wiki</title>
    <link>http://www11.atwiki.jp/pochi/</link>
    <description>pochy9n at wiki</description>

    <dc:language>ja</dc:language>
    <dc:date>2009-06-07T15:04:32+09:00</dc:date>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="http://www11.atwiki.jp/pochi/pages/23.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/pochi/pages/26.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/pochi/pages/25.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/pochi/pages/24.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/pochi/pages/22.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/pochi/pages/21.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/pochi/pages/20.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/pochi/pages/18.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/pochi/pages/19.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/pochi/pages/16.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="http://www11.atwiki.jp/pochi/pages/23.html">
    <title>(Zaurus)Perl-CPAN-PerlQtパッケージ</title>
    <link>http://www11.atwiki.jp/pochi/pages/23.html</link>
    <description>
      ここに掲載するものは、塚本さんにパッケージ化して頂いている[[Zaurus用Perl 5.6.1&gt;http://digit.que.ne.jp/visit/index.cgi?Linux%A5%B6%A5%A6%A5%EB%A5%B9%2FPerl]]に追加でインストールするPerlライブラリのPerlQt/Embeddedである。~
ソースは[[ここ&gt;http://search.cpan.org/~awin/PerlQt-2.105/doc/starting.pod]]からダウンロードして修正し、dev-img-1.3でセルフコンパイルした。

download：[[lib-perl-qte_2.105-p0.02_arm.ipk&gt;http://www11.atwiki.jp/pochi?cmd=upload&amp;act=open&amp;pageid=23&amp;file=lib-perl-qte_2.105-p0.02_arm.ipk]]

*ビルド環境

以下のソースファイルを解凍し、makeコマンドでPerlQt/Embeddedをビルドすることができる。

ソースファイル：[[perlqt-2.105-p0.02-src.tar.gz&gt;http://www11.atwiki.jp/pochi?cmd=upload&amp;act=open&amp;pageid=23&amp;file=perlqt-2.105-p0.02-src.tar.gz]]

*チュートリアルとサンプル

以下のチュートリアルとサンプルに含まれるスクリプトファイルでは、PerlQt/Embeddedで動作させるために修正した部分が判別できるように、削除した行の先頭と追加した行の末尾に&quot;#@@&quot;というコメントを付けた。

チュートリアル：[[perlqt-2.105_tutorials-2.0-p2.tar.gz&gt;http://www11.atwiki.jp/pochi?cmd=upload&amp;act=open&amp;pageid=23&amp;file=perlqt-2.105_tutorials-2.0-p2.tar.gz]]

サンプル：[[perlqt-2.105_examples-2.0-p2.tar.gz&gt;http://www11.atwiki.jp/pochi?cmd=upload&amp;act=open&amp;pageid=23&amp;file=perlqt-2.105_examples-2.0-p2.tar.gz]]

*今後の課題

-Menuボタンの対応
-エディットクラスの日本語対応
-QPE関連ダイアログの実装
-その他のバグ修正
-日本語マニュアルの作成

----

PerlQtの詳細は以下をご覧頂きたい。

英語：http://search.cpan.org/~awin/PerlQt-2.105/doc/starting.pod ~
英語：http://perlqt.sourceforge.net/ ~
日本語：http://www.kde.gr.jp/~ichi/qt-2.3.2/

----

ご意見、ご要望、バグ報告などはこちら↓へどうぞ。~
~
- これ以上進めるにはまともにQtを勉強しなければならないと考えたので、このプロジェクトは開店休業状態になります。 &amp;br()現在、「Qt GUI プログラミング」で基本から勉強中です。 &amp;br()  -- pochy9n  (2008-07-15 23:03:18)
#comment(size=80,nsize=80,vsize=5)
~
*更新履歴

-2008/05/09
--bitBltをQt::PaintDeviceに実装した。同クラスはQt::Widgetのベースとなっているため、全ての表示オブジェクトがbitBltを実装したことになる。これにより、以下のサンプルが動作した。
---examples-2.0/hello/hello
---examples-2.0/biff/biff
--keyReleaseEventをQt::Buttonに実装した。このメソッドが定義されていなかったために、ボタンにフォーカスを当て押したスペースキーを離しても、押された表示のままだった。
--qt/qdrawutil.hに定義されているQt::Painter関連の関数を全て実装した。その中のqDrawShadePanelを実装することにより、以下のサンプルが動作した。
---examples-2.0/life/life
--addMultiCellLayoutをQt::GridLayoutに実装した。これにより、以下のサンプルが動作した。
---examples-2.0/widgets/widgets
--中身が未実装のnewcopyをQt::PointArrayに実装した。また、親クラスのduplicate、size、count、isEmpty、isNull、resize、truncate、fill、find、contains、sort、bsearchも実装した。これにより、以下のサンプルが動作した。
---examples-2.0/drawdemo/drawdemo
-2008/04/19：ビルド環境をアップロード。
-2008/04/17：初回リリース。

~
~
~
~
~
~
~
~
~
~
----    </description>
    <dc:date>2009-06-07T15:04:32+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/pochi/pages/26.html">
    <title>(Linux)bashのcdコマンドを拡張する</title>
    <link>http://www11.atwiki.jp/pochi/pages/26.html</link>
    <description>
      *はじめに
bashにはpushdとその反対のpopdコマンドが内蔵されている。~
pushdは指定されたディレクトリに移動後、移動先のディレクトリをDIRSTACK配列環境変数の先頭の要素として追加する。~
popdはDIRSTACKの先頭の要素に保存されているディレクトリに移動後、その要素を削除して2番目の要素以降を先頭に1つずつ詰める。~
pushdとpopdは移動先のディレクトリから移動前のディレクトリに戻りたいときに使用すると便利だが、ディレクトリの移動には日常的に使用するcdコマンドを使ってしまうため、popdで戻ろうとしても後の祭りとなることが多い。~
そこで、cdコマンドに履歴機能を持たせることで、pushdやpopdよりも使い勝手の良いものを作成する。

*スクリプトの作成
~~/.bashrcに以下のサブルーチンを追加する。

 # 環境設定
 # LAST_DIRLIST：最終DIRLIST要素番号（処理の都合上、最大DIRLIST要素数ではない）
 # SAVE_DIRLIST：DIRLISTの保存先ファイル名
 
 LAST_DIRLIST=19
 SAVE_DIRLIST=$HOME/.dirlist
 
 # ディレクトリの移動
 # 使用法：chdir [dir]
 # dir：移動先のディレクトリ
 #      指定されていない場合はホームディレクトリに移動
 # 説明：カレントディレクトリをDIRLIST配列環境変数の先
 #       頭の要素として追加し、指定されたディレクトリに
 #       カレントディレクトリを移動する。
 #       DIRLISTには最大で（LAST_DIRLIST + 1）件の履歴を保存する。
 
 function chdir
 {
     if [ ${#DIRLIST[@]} -gt $LAST_DIRLIST ]; then
         unset DIRLIST[$LAST_DIRLIST]
     fi
     DIRLIST=(`pwd` ${DIRLIST[@]})
     cd $*
 }
 
 # 過去のディレクトリに移動
 # 使用法：unchdir [num]
 # num：過去の履歴の番号（1=1つ前、2=2つ前、…）
 #      指定されていない場合は1つ前に移動
 # 説明：指定された履歴番号（DIRLISTの添え字）の要素を
 #       DIRLISTから削除し、カレントディレクトリを先頭
 #       の要素として追加して、削除した要素に保存され
 #       ていたディレクトリにカレントディレクトリを移
 #       動する。
 
 function unchdir
 {
     if [ ${#DIRLIST[@]} -eq 0 ]; then
         echo &quot;No changing directory&quot;
         return 1
     fi
     if [ $# -eq 0 ]; then
         i=0
     else
         i=$1
         if [ $i -le 0 ]; then
             i=1
         elif [ $i -gt ${#DIRLIST[@]} ]; then
             i=${#DIRLIST[@]}
         fi
         i=`expr $i - 1`
     fi
     d=${DIRLIST[$i]}
     unset DIRLIST[$i]
     DIRLIST=(`pwd` ${DIRLIST[@]})
     cd $d
 }
 
 # 過去のディレクトリに戻る
 # 使用法：backdir [num]
 # num：過去の履歴の番号（1=1つ前、2=2つ前、…）
 #      指定されていない場合は1つ前に戻る
 # 説明：先頭から指定された履歴番号（DIRLISTの添え字）
 #       までの要素をDIRLISTから削除し、指定された要素
 #       に保存されていたディレクトリにカレントディレ
 #       クトリを移動する。
 
 function backdir
 {
     if [ ${#DIRLIST[@]} -eq 0 ]; then
         echo &quot;No changing directory&quot;
         return 1
     fi
     if [ $# -eq 0 ]; then
         i=0
     else
         i=$1
         if [ $i -le 0 ]; then
             i=1
         elif [ $i -gt ${#DIRLIST[@]} ]; then
             i=${#DIRLIST[@]}
         fi
         i=`expr $i - 1`
     fi
     d=${DIRLIST[$i]}
     DIRLIST=(`awk &quot;BEGIN {for (i = $i + 2; i &lt; ARGC; i++) {print ARGV[i], &quot;\n&quot;;}}&quot; ${DIRLIST[@]}`)
     cd $d
 }
 
 # ディレクトリの移動履歴を表示
 # 使用法：printdir
 # 説明：DIRLISTの全要素を履歴番号（DIRLISTの添え字）
 #       付きで表示する。
 
 function printdir
 {
     echo ${DIRLIST[@]} | awk &#039;{for (i = 1; i &lt;= NF; i++) { printf &quot;[%d] %s\n&quot;, i, $(i); }}&#039;
 }

*エイリアスの設定
~~/.bashrcに以下のエイリアスを追加する。~
ただし、上記「[[スクリプトの作成]]」に記載したサブルーチンの後に追加しないと、例えば、chdirが実行するcdがchdirに置き換えられるため、無限にchdirを呼び出すことになり、その結果、スタックオーバーフローが発生する。

 # 現在のcdコマンドの拡張など
 alias cd=&quot;chdir&quot;
 alias ud=&quot;unchdir&quot;
 alias bd=&quot;backdir&quot;
 alias pd=&quot;printdir&quot;
~
~
~
~
~
~
~
~
~
~
----    </description>
    <dc:date>2009-03-29T19:39:30+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/pochi/pages/25.html">
    <title>(Zaurus)GNU-grepコマンド</title>
    <link>http://www11.atwiki.jp/pochi/pages/25.html</link>
    <description>
      ここに掲載するものは、Zaurus用のGNU grepコマンドである。~
Zaurus標準のgrepコマンド（version 2.2）は、findコマンドと併用しなければサブディレクトリも検索対象とすることができない、Perlの正規表現が使えないなど、最近のものに比べ機能的に足りない点がある。~
ソースは[[ここ&gt;http://ftp.yz.yamagata-u.ac.jp/pub/GNU/grep/grep-2.5.3.tar.gz]]からダウンロードし、dev-img-1.3でセルフコンパイルした。

download：[[grep_2.5.3-1_arm.ipk&gt;http://www11.atwiki.jp/pochi?cmd=upload&amp;act=open&amp;pageid=25&amp;file=grep_2.5.3-1_arm.ipk]]（-Pオプション使用不可）~
download：[[grep_2.5.3-pcre-1_arm.ipk&gt;http://www11.atwiki.jp/pochi?cmd=upload&amp;act=open&amp;pageid=25&amp;file=grep_2.5.3-pcre-1_arm.ipk]]（-Pオプション使用可能）

上記の「-Pオプション使用可能」な方を利用する場合は、別途[[(Zaurus)PCREライブラリ]]をインストールする必要がある。

grepコマンドの詳細は以下をご覧頂きたい。

英語：http://unixhelp.ed.ac.uk/CGI/man-cgi?grep ~
日本語：http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html

~
~
~
~
~
~
~
~
~
~
----    </description>
    <dc:date>2008-04-22T08:39:23+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/pochi/pages/24.html">
    <title>(Zaurus)PCREライブラリ</title>
    <link>http://www11.atwiki.jp/pochi/pages/24.html</link>
    <description>
      ここに掲載するものは、[[(Zaurus)GNU-grepコマンド]]でも使用するPCRE（Perl Compatible Regular Expression）ライブラリである。~
ソースは[[ここ&gt;http://www.pcre.org/]]からダウンロードし、dev-img-1.3でセルフコンパイルした。

download：[[pcre_7.6-1_arm.ipk&gt;http://www11.atwiki.jp/pochi?cmd=upload&amp;act=open&amp;pageid=24&amp;file=pcre_7.6-1_arm.ipk]]

上記インストールパッケージに含まれるpcregrepコマンドを利用すれば、GNU grepは不要かもしれない。~
PCREをZaurusでビルドするにはスワップの設定が必要である。

PCREの詳細は以下をご覧頂きたい。

英語：http://www.pcre.org/~
日本語：http://www.planewave.org/translations/pcre-3.4/pcre.ja.3.html

~
~
~
~
~
~
~
~
~
~
----    </description>
    <dc:date>2008-04-22T08:28:59+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/pochi/pages/22.html">
    <title>(Zaurus)Perl-CPAN-MP4::Infoパッケージ</title>
    <link>http://www11.atwiki.jp/pochi/pages/22.html</link>
    <description>
      ここに掲載するものは、塚本さんにパッケージ化して頂いている[[Zaurus用Perl 5.6.1&gt;http://digit.que.ne.jp/visit/index.cgi?Linux%A5%B6%A5%A6%A5%EB%A5%B9%2FPerl]]に追加でインストールするPerlライブラリのMP4::Infoである。~
ソースは[[ここ&gt;http://search.cpan.org/~jhar/MP4-Info-1.11/Info.pm]]からダウンロードし、dev-img-1.3でセルフコンパイルした。

セルフコンパイルとは言っても、実際にはPerlスクリプトだけでできている。

download：[[lib-perl-mp4-info_1.11-1_arm.ipk&gt;http://www11.atwiki.jp/pochi?cmd=upload&amp;act=open&amp;pageid=22&amp;file=lib-perl-mp4-info_1.11-1_arm.ipk]]

手始めの使い方は以下の通りである。

 # 指定されたファイルの情報を表示
 use MP4::Info;
 @info = qw(TITLE TRACKNUM TIME ARTIST ALBUM COMMENT DAY GENRE);
 print join(&quot;,&quot;, @info) . &quot;\n&quot;;
 foreach $fname (@ARGV) {
     $tagp = get_mp4tag($fname);
     if (defined($tagp)) {
         $s = &quot;&quot;;
         foreach $t (@info) {
             $s .= &quot;\&quot;$tagp-&gt;{$t}\&quot;,&quot;;
         }
         chop($s);
         print &quot;$s\n&quot;;
     }
 }

MP4::Infoの詳細は以下をご覧頂きたい。

英語：http://search.cpan.org/~jhar/MP4-Info-1.11/Info.pm
~
~
~
~
~
~
~
~
~
~
----    </description>
    <dc:date>2008-03-30T19:33:01+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/pochi/pages/21.html">
    <title>(Zaurus)Perl-CPAN-MP3::Tagパッケージ</title>
    <link>http://www11.atwiki.jp/pochi/pages/21.html</link>
    <description>
      ここに掲載するものは、塚本さんにパッケージ化して頂いている[[Zaurus用Perl 5.6.1&gt;http://digit.que.ne.jp/visit/index.cgi?Linux%A5%B6%A5%A6%A5%EB%A5%B9%2FPerl]]に追加でインストールするPerlライブラリのMP3::Tagである。~
ソースは[[ここ&gt;http://search.cpan.org/~ilyaz/MP3-Tag-0.9709/Tag.pm]]からダウンロードし、dev-img-1.3でセルフコンパイルした。

セルフコンパイルとは言っても、実際にはPerlスクリプトだけでできている。

download：[[lib-perl-mp3-tag_0.9708-1_arm.ipk&gt;http://www11.atwiki.jp/pochi?cmd=upload&amp;act=open&amp;pageid=21&amp;file=lib-perl-mp3-tag_0.9708-1_arm.ipk]]

手始めの使い方は以下の通りである。

 # 指定されたファイルの情報を表示
 use MP3::Tag;
 print &quot;Title,Track,Artist,Album,Comment,Year,Genre\n&quot;;
 foreach $fname (@ARGV) {
     $mp3 = MP3::Tag-&gt;new($fname);
     if (!$mp3) {
         if (-f $fname) {
             print &quot;can&#039;t read MP3 tag from $fname\n&quot;;
         } else {
             print &quot;$fname not found\n&quot;;
         }
         next;
     }
     @tag = $mp3-&gt;autoinfo();
     # Genreで同じ内容が重複することがあるので調整
     $n = length($tag[6]);
     if (($n &amp; 1) == 0) {
         $fmt = &quot;a&quot; . ($n / 2);
         ($s1, $s2) = unpack($fmt x 2, $t);
         if ($s1 eq $s2) {
             $tag[6] = $s1;
         }
     }
     $s = &quot;&quot;;
     foreach $t (@tag) {
         $s .= &quot;\&quot;$t\&quot;,&quot;;
     }
     chop($s);
     print &quot;$s\n&quot;;
 }

MP3::Tagの詳細は以下をご覧頂きたい。

英語：http://search.cpan.org/~ilyaz/MP3-Tag-0.9709/Tag.pm
~
~
~
~
~
~
~
~
~
~
----    </description>
    <dc:date>2008-03-30T19:31:46+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/pochi/pages/20.html">
    <title>(Perl)XSからパッケージを作成する</title>
    <link>http://www11.atwiki.jp/pochi/pages/20.html</link>
    <description>
      多くのPerlパッケージはPerlスクリプト（PMファイル）で作成される。~
h2xsコマンドで作成されるXSの初期ビルド環境でも1つのPMファイルが用意され、そのPMファイルがpackage命令によってパッケージを作成する。~
単一のパッケージを作成する場合はこの方法で完結するのだが、1つのパッケージに多数のサブパッケージが付随する場合、それらのサブパッケージごとにXSのビルド環境を用意するよりも、XSから動的にサブパッケージを作成した方が効率的かつ高速で、管理も楽である。

以下の例では、Pkg1::initサブルーチンを呼び出ことにより、Pkg1::Sub1パッケージを生成し、次にPkg1::Sub1::helloを呼び出すことによってAUTOLOADの仕組み（呼び出されたサブルーチンがないときに同じパッケージのAUTOLOADサブルーチンが呼び出される仕組み）が働き、Pkg1::Sub1::helloサブルーチンのエントリが動的に作成される。

 /* h2xs -n Pkg1 */
 
 #include &quot;EXTERN.h&quot;
 #include &quot;perl.h&quot;
 #include &quot;XSUB.h&quot; 
 
 /*
  * h2xsコマンドが生成する部分
  *          :
  *          :
  */
 
 XS(XS_Pkg1_Sub1_hello)
 {
     dXSARGS;
     printf(&quot;hello world\n&quot;);
     XSRETURN_EMPTY;
 }
 
 XS(XS_Pkg1_Sub1_autoload)
 {
     dXSARGS;
     int i;
     for (i = 0; i &lt; items; i++) {
         printf(&quot;ST[%d]:%s\n&quot;, i, SvPV_nolen(ST(i)));
     }
     newXS(&quot;Pkg1::Sub1::hello&quot;, XS_Pkg1_Sub1_hello, __FILE__);
     XSRETURN_EMPTY;
 }
 
 MODULE = Pkg1   PACKAGE = Pkg1
 
 /*
  * h2xsコマンドが生成する部分
  *          :
  *          :
  */
 
 void
 init()
 CODE:
     perl_eval_pv(&quot;\
 package Pkg1::Sub1; \
 sub AUTOLOAD \
 { \
     Pkg1::Sub1::autoload($AUTOLOAD); \
     goto &amp;$AUTOLOAD; \
 } \
 1; \
 &quot;, 1);
     newXS(&quot;Pkg1::Sub1::autoload&quot;, XS_Pkg1_Sub1_autoload, __FILE__);

上記のXSをビルドして、以下のスクリプトを実行する。

 #!/usr/bin/perl -Iblib/arch -Iblib/lib
 use Pkg1;
 Pkg1::init();
 Pkg1::Sub1::hello();
 Pkg1::Sub1::hello();

出力結果は以下の通り。

 ST[0]:Pkg1::Sub1::hello
 hello world
 hello world

2回目に呼び出したPkg1::Sub1::helloサブルーチンのエントリが作成済みであることが分かる。

上記のテクニックはC++のクラスを簡単にパッケージとして表現する手段として利用できるはずである。
~
~
~
~
~
~
~
~
~
~
----    </description>
    <dc:date>2008-03-23T18:54:52+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/pochi/pages/18.html">
    <title>(Zaurus)Perl-CPAN-Term::ReadKeyパッケージ</title>
    <link>http://www11.atwiki.jp/pochi/pages/18.html</link>
    <description>
      ここに掲載するものは、塚本さんにパッケージ化して頂いている[[Zaurus用Perl 5.6.1&gt;http://digit.que.ne.jp/visit/index.cgi?Linux%A5%B6%A5%A6%A5%EB%A5%B9%2FPerl]]に追加でインストールするPerlライブラリのTerm::ReadKeyである。~
ソースは[[ここ&gt;http://search.cpan.org/~jstowe/TermReadKey-2.30/ReadKey.pm]]からダウンロードし、dev-img-1.3でセルフコンパイルした。

gcc 2.95はコードオプティマイズにバグを含んでいると言う話を聞いているので、Makefileからオプティマイズオプションを外してビルドした。

download：[[lib-perl-term-readkey_2.30-1_arm.ipk&gt;http://www11.atwiki.jp/pochi?cmd=upload&amp;act=open&amp;pageid=18&amp;file=lib-perl-term-readkey_2.30-1_arm.ipk]]

手始めの使い方は以下の通りである。

 #パスワードの入力
 use Term::ReadKey;
 ReadMode(1);
 print &quot;userid:&quot;;
 $user = ReadLine(0);
 chomp($user);
 ReadMode(2);
 print &quot;password:&quot;;
 $pass = ReadLine(0);
 print &quot;\n&quot;;
 chomp($pass);
 ReadMode(0);
 print &quot;userid=$user\n&quot;;
 print &quot;password=$pass\n&quot;;

 #タイムアウト付きキー入力
 use Term::ReadKey;
 select(STDOUT);
 $| = 1; # $OUTPUT_AUTOFLUSH
 print &quot;hit any key while 3 seconds:&quot;;
 $| = 0;
 ReadMode(4);
 $c = ReadKey(3);
 ReadMode(0);
 print &quot;$c\n&quot;;

Term::ReadKeyの詳細は以下をご覧頂きたい。

英語：http://search.cpan.org/~jstowe/TermReadKey-2.30/ReadKey.pm
~
~
~
~
~
~
~
~
~
~
----    </description>
    <dc:date>2008-03-09T15:10:40+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/pochi/pages/19.html">
    <title>(Zaurus)Perl-CPAN-Time::HiResパッケージ</title>
    <link>http://www11.atwiki.jp/pochi/pages/19.html</link>
    <description>
      ここに掲載するものは、塚本さんにパッケージ化して頂いている[[Zaurus用Perl 5.6.1&gt;http://digit.que.ne.jp/visit/index.cgi?Linux%A5%B6%A5%A6%A5%EB%A5%B9%2FPerl]]に追加でインストールするPerlライブラリのTime::Hiresである。~
ソースは[[ここ&gt;http://search.cpan.org/~jhi/Time-HiRes-1.9705/HiRes.pm]]からダウンロードし、dev-img-1.3でセルフコンパイルした。

gcc 2.95はコードオプティマイズにバグを含んでいると言う話を聞いているので、Makefileからオプティマイズオプションを外してビルドした。

download：[[lib-perl-time-hires_1.86-1_arm.ipk&gt;http://www11.atwiki.jp/pochi?cmd=upload&amp;act=open&amp;pageid=19&amp;file=lib-perl-time-hires_1.86-1_arm.ipk]]

手始めの使い方は以下の通りである。

 # 1.2秒待つ
 use Time::HiRes qw(usleep);
 usleep(1200000); # マイクロ秒（100万分の1秒）

 # 2.7秒間のキー入力を待つ
 use Time::HiRes qw(gettimeofday tv_interval);
 use Term::ReadKey;
 ReadMode(4);
 print &quot;hit any key ... &quot;;
 undef $key;
 @curtm = gettimeofday;
 while (tv_interval(\@curtm) &lt; 2.7) {
     $key = ReadKey(-1);
     if (defined($key)) {
         last;
     }
 }
 ReadMode(0);
 if (defined($key)) {
     print &quot;press &#039;$key&#039;\n&quot;;
 } else {
     print &quot;no key\n&quot;;
 }

 # 5.3秒間に0.8秒毎のシグナルを受信する
 use Time::HiRes qw(usleep ualarm gettimeofday tv_interval);
 sub showtime {
     $t = gettimeofday;
     print $t, &quot;\n&quot;;
 }
 $SIG{ALRM} = &quot;showtime&quot;;
 showtime; # 開始時間を表示
 ualarm(800000, 800000);
 @curtm = gettimeofday;
 # 以下のwhileループについては※1を参照
 while (($rel = 5.3 - tv_interval(\@curtm)) &gt; 0) {
     usleep(int($rel * 1000000));
 }
 showtime; # 終了時間を表示

:※1|本当は &quot;usleep(5300000);&quot; で済むはずだが、このバージョンのPerlではusleep内でシグナルが発生すると、残りの待ち時間があったとしてもusleepが終了してしまうため、別の方法で正確な時間を取らなければならない。

~
Zaurusではclock_gettime，clock_getres，clock_nanosleepはサポートしていない。~
また、setitimerではITIMER_REALのみをサポートしている。

Time::HiResの詳細は以下をご覧頂きたい。

英語：http://search.cpan.org/~jhi/Time-HiRes-1.9705/HiRes.pm~
日本語：http://perldoc.jp/docs/modules/Time-HiRes-1.55/HiRes.pod
~
~
~
~
~
~
~
~
~
~
----    </description>
    <dc:date>2008-03-09T15:10:26+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/pochi/pages/16.html">
    <title>(Zaurus)Perl-CPAN-Jcodeパッケージ</title>
    <link>http://www11.atwiki.jp/pochi/pages/16.html</link>
    <description>
      ZaurusでPerlスクリプトが実行できることは大変有意義なことである。~
もっと有意義にするために、CPANからJcodeを入手しパッケージ化（IPKファイルに変換）した。

----

ここに掲載するものは、塚本さんにパッケージ化して頂いている[[Zaurus用Perl 5.6.1&gt;http://digit.que.ne.jp/visit/index.cgi?Linux%A5%B6%A5%A6%A5%EB%A5%B9%2FPerl]]に追加でインストールするPerlライブラリのJcodeである。~
ソースは[[ここ&gt;http://search.cpan.org/~dankogai/Jcode-2.06/Jcode.pm]]からダウンロードし、dev-img-1.3でセルフコンパイルした。

gcc 2.95はコードオプティマイズにバグを含んでいると言う話を聞いているので、Makefileからオプティマイズオプションを外してビルドした。~
また、Jcode/Nihongo.podの &quot;=encoding euc-jp&quot; をコメントアウトする必要があった。

download：[[lib-perl-jcode_2.06-1_arm.ipk&gt;http://www11.atwiki.jp/pochi?cmd=upload&amp;act=open&amp;pageid=16&amp;file=lib-perl-jcode_2.06-1_arm.ipk]]

手始めの使い方は以下の通りである。

 use Jcode;
 $target = &quot;こんにちはザウルス&quot;;
 $icode = &quot;sjis&quot;;
 $ocode = &quot;utf8&quot;;
 &amp;Jcode::convert(\$target, $ocode, $icode);
 print &quot;$icode to $ocode:$target\n&quot;;

上記スクリプトは漢字コードをShift JISでファイルに保存し、出力漢字コードがUTF8の端末で実行したときのみ正常に動作する。

 &amp;Jcode::convert(\$target, $ocode);

とすれば、入力の漢字コードは自動的に判定される。~
ただし、変換対象の文字列が短過ぎると誤判定することがあるので、予め分かっている場合は指定した方が確実であり、判定している時間を必要としない分、短い変換時間で済む。

Jcodeの詳細は以下をご覧頂きたい。

英語：http://search.cpan.org/~dankogai/Jcode-2.06/Jcode.pm~
日本語：http://perldoc.jp/docs/modules/Jcode-0.82/Jcode.pod~
~
~
~
~
~
~
~
~
~
~
----    </description>
    <dc:date>2008-03-08T23:12:20+09:00</dc:date>
  </item>
  </rdf:RDF>

