作成開始 : 平成16年03月25日(木) 最終更新 : 平成20年08月25日(月)

Jcode.pmとBase64.pmのインストール


あるPerlスクリプトをダウンロードして設置し実行しました。でも、実行すると英文で「・・・・Jcode.pm・・・・・」というメッセージを表示しabortしてしまうのです。
もちろん、スクリプトの転送形式はasciiだし、パーミッションもOKです。
「jcode.plなら知ってるけどJcode.pmってなんだろう?」と思いながらスクリプトを眺めてみました。そしたら

use Jcode;

という記述が見つかりました。「あれ? jcode.pl なら require './jcode.pl'; だよなー そもそも Jcode.pm ってなんだぁー」・・・・・で調べました。
そしたら、次のような記事を発見しました。


[オープンラボラトリーより引用]

Jcode.pm - jcode.pl の後継

Perl 5.8.0 より、Jcodeの全機能は Encode module を通じてPerlに標準装備となります。Jcodeのメンテナンスは旧Perlのために今後も続けていく所存ですが、最新のPerlをお使いの方には、より高機能、高性能、そしてなんといっても標準装備の Encode の方をお薦めします。

Jcode.pm

は、さまざまな日本語文字コードをPerlで扱うためのModuleです。 jcode.pl-2.10 の全機能に加えて、

詳しくは Jcode.html (Jcode.pm をpod2htmlしたもの)を御覧下さい。

インストール

簡単です。

via CPAN

ネットワークの帯域幅を考えれば、こちらがおすすめです。CPANモジュールはバージョン番号のチェックも行ってくれるので、常に同じ方法で最新版をインストールすることができます。

  1. まずPerl5をお使いであることを確認してください。Jcode.pmはPerl5専用です。
  2. 以下のとおりShellからCPANモジュールを起動します。

    $ perl -MCPAN -e shell

  3. はじめてCPANモジュールを実行した場合、いくつかの質問に答えることになります。ほとんどはネットワーク関連の簡単な質問です。ミラーサイトの選択ですが、日本の方は

    http://www.ring.gr.jp/pub/lang/perl/CPAN/

    をお試し下さいませ。

    ・・・・・とありますが私のところで perl -MCPAN -e shell を実行したら、英語での質問で私にとっては「簡単」ではなかったのです。とりあえず、全ての質問項目にディフォルト入力をしました。そしたら、サイトの選択はなく、しかもFTPでどこぞのサイトに取りに行こうとしました。ですが、そのFTPサイトは動いていないみたいなので、アクセス不可でcpanが異常終了しました。なので、この方法は断念しTarballを直接入手する方法としました。

  4. あとは"install Jcode"と入力するだけです。

    cpan> install Jcode

    あとはCPANモジュールが、ダウンロード、テスト、そしてインストールまで全て面倒をみてくれます。

Tarballを直接入手

CPANのアップデートが待てない貴女貴兄はこちら。

  1. Make sure you have perl5. Jcode.pm is for perl5 only.
  2. download Jcode-0.83.tar.gz or Jcode-0.83.zip.
  3. $ gunzip Jcode-*.tar.gz | tar xf -
    # or "tar zxf Jcode-0.10.tar.gz" if your tar is gnu
  4. $ cd Jcode-*
  5. $ perl Makefile.PL; make; make install
a.私は「Jcode-0.83.tar.gz」をWindows PCにダウンロードしました。
b.そして、FTP(バイナリ)でこのサーバーにアップロードしました。カレントディレクトリは /usr/local/src です。ユーザは root です。
c.# gunzip Jcode-0.83.tar.gz | tar xf - [Enter] とすると Jcode-0.83.tar というファイルに置き換わりました。
d.# tar -xvf Jcode-0.83.tar [Enter] とすると Jcode-0.83 というディレクトリが作られ、その下に make に必要なファイル群があらわれました。
e# .cd Jcode-0.83 [Enter] でカレントディレクトリを移動しました。
f.# perl Makefile.PL; make; make install [Enter] でコンパイルとインストールを実行しました。
g./usr/local/lib/perl5/site_perl/5.005/i386-freebsd に Jcode.pm がありました。

これで、ダウンロードしたスクリプトは一通り動きました。ところが・・・・・
そのスクリプトにはメールを出す機能があるのですが、その機能を使ったら・・・・・・・・・・・

Can't locate MIME/Base64.pm in @INC(@INC contains:./extlib ./lib
/usr/lib/perl5/5.00503/i386-FreeBSD /usr/lib/perl5/site_perl/5.005.)
at ../extlib/Jcode.pm line290.

みたいなエラーをブラウザに表示し、メールは送信されませんでした。
これも調べたら、どうやら Base64.pm が無いためのようです。下記のスクリプト部分で発生しているようでした。

$Subject = jcode($Subject)->mime_encode;


[オープンラボラトリーより引用]

MIME header のサポート

RFC1522 によると、Mailなどのヘッダーに日本語を使うには、iso-2022-jpの文字列にするだけでは十分ではなく、さらにそれをbase64でエンコードした上で =?ISO-2022-JP?B??= で括らなければなりません。jcode.plにはこの機能がありません。


この「base64でエンコード」のところで Base64.pm が要るようなのです。
面倒くさいので、$Subject = jcode($Subject)->mime_encode; をリマークしてスクリプト実行したら、メールは送信されましたが、受信したメールの件名は文字化けしていました。
文字化けしないように $Subject の内容を英文にすると正しい件名でメールを送信することができました。
でも、いざ受信した件名を見てみると、(偏見かもしれませんが)海外の怪しげなサイトからの広告メールのように見えてしまいます。
なんか、カッコ悪いので Base64.pm をセットアップすることにしました。

http://search.cpan.org/dist/MIME-Base64 からダウンロードしました。

a.MIME-Base64-2.23.tar.gz をWindows PC にダウンロード(最新のMIME-Base64-3.00はエラーが出たので使わない方が良さそうです・・・とのことでした)
b.FTP(バイナリ)でこのサーバーにアップロードしました。カレントディレクトリは /usr/local/src です。ユーザは root です。
c.# gunzip MIME-Base64-2.23.tar.gz [Enter] とすると MIME-Base64-2.23.tar というファイルに置き換わりました。
d.# tar -xvf MIME-Base64-2.23.tar [Enter] とすると MIME-Base64-2.23 というディレクトリが作られ、その下に make に必要なファイル群があらわれました。
e# .cd MIME-Base64-2.23 [Enter] でカレントディレクトリを移動しました。
f.# perl Makefile.PL; make; make install [Enter] でコンパイルとインストールを実行しました。
g./usr/local/lib/perl5/site_perl/5.005/i386-freebsd/MIME/Base64.pm がありました。

これで、OKです。
スクリプトのリマークを外し、Subjectを日本語で記述してスクリプトからメール送信したら、日本語の件名で受信されました。
あとは、/usr/local/src で 以下を実行しファイルを削除しました。

# rm Jcode-0.83.tar [Enter]
# rm -rf Jcode-0.83 [Enter]
# rm MIME-Base64-2.23.tar [Enter]
# rm -rf MIME-Base64-2.23 [Enter]


平成20年08月25日(月) 追記

Jcode-0.83.tar.gz、MIME-Base64-2.23.tar.gz ともに上記のサイトにはありませんでした。
それぞれバージョンアップしていますね。
古いPerlが入っている方は Google とかで直接検索すると見つかります。
まぁ、Perlを Update すべきなんですけどね。
・・・・という状況なので、Armadaにコンテンツ移行した時に見つけたものを保存しておきます。
Jcode-0.88.tar.gz  MIME-Base64-2.23.tar.gz

戻る

サイトトップへ