Wed 04/19, 2006

Perl メモ [Computer and Networking ]

仕事などでもちょびちょび使っている Perl (ActivePerl 5.8) の使用メモ

Parse::Binary
今時のデータ通信では XML などの構造化されたフォーマットを使うのが主流なのだけれども、どっこい COBOL 風の詰め込みデータも生き残っている。 そうしたデータの処理に使う pack/unpack をより便利にしたもの。変数名と項目を並べて定義しておき、ハッシュとして扱う。 内部ブロックでの繰り返しにも対応しているのだけれども、そうしたものが複数箇所あると、unformat した結果へのアクセスがちょっと面倒になる。
ActivePerl with Oracle 10g (on Windows)
Oracle 10g では Perl が同時にインストールされて Oracle 内部で使われるため、他の ActivePerl などを共存させる場合には要注意だ。環境変数 PATH に ActivePerl のパスが含まれていると sql*plus などがエラーになったり、Web ツールがまともに動かなくなったりと色々支障がある。このため、ActivePerl のインストール時には PATH の設定オプションなどは外しておき、使用する際にのみ追加する。また、Oracle 10g サーバーを入れると PERL5LIB 環境変数も設定されるが、この中のライブラリは ActivePerl のものと互換性がないため、ActivePerl 使用時には set PERL5LIB= として解除すること(あるいは別のものに指定)も必要になる。結構な迷惑だ。 また、DBD::Oracle を使う ActivePerl スクリプトをサービスなどで動かす場合にはこれらの他の環境変数の設定にも注意する。PATH には oci.dll が含まれるディレクトリを含むこと。ORACLE_HOME(Data Source Name = DSN にサービス名を使う場合) または SystemRoot (DSN に hostname, sid を使う場合)。NLS_LANG はスクリプト内で設定しても良い。
Class::DBI
OO で美しく表現するには良いのだけれど、副問合せなどちょっと複雑な SQL を使うような場合には御利益が薄いような。私がよく判っていないだけだな、きっと。DBIx::Abstract てのはどうかな。
XML と utf8, cp932
XML::Simple などで XML ファイルを解析する場合、Shift-JIS だと何かと具合が悪い。 そこで、ちょっと姑息ではあるが Encode を使って utf8 化し、XML Declaration に含まれる encoding を utf-8 と書き換えてから XML::Simple に食わせて処理する。その後で必要に応じて cp932 に再変換する。Shift-JIS ではなくて、cp932 としないと NEC 選定および IBM 漢字コード部分が化ける。それ以上の細かいことはとりあえず勘弁して貰う。
オフラインで ppm
インターネットに接続されていない環境で ppm によるパッケージのインストールをおこなうには、先ず必要なパッケージを PPM Zip Archives から取得し展開しておく。その際に依存関係のあるものも同様に用意する。依存パッケージについては .ppd ファイル中で "DEPENDANCY NAME=xxx" などと記載されているから、依存関係をすべて辿ること。その上で ppm を起動し、"rep add local <location>" というふうにパッケージを展開したディレクトリをローカルリポジトリとして追加し、後は通常通り install すれば良い。
Posted by masato at 10:12 PM
このエントリーのトラックバックURL: http://bird.dip.jp/cgi-bin/mt/mt-tb.cgi/1127
コメントする

おそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。










名前、アドレスを登録しますか?