PerlCEの試験結果。
この試験は、GENIO e550X (PocketPC2002 + Strong Arm 200MHz)上で行っています。 画面写真も同機種のものです。
Same page in (very poor) English is here.
PerlCEは、General Paranoyaxcというページで公開されているWindows CE用のPerlです。
単純なプリント文によるHello, world!は動作しました。 しかし、日本語の表示は文字化けしますし、そもそも日本語交じりのスクリプトが実行できない(スクリプトにSyntax errorが出てしまう)ケースもありました。
PerlIDE上で、以下の古典的な試験スクリプトを作成します。
print "Hello, World!\n";
[File]-[Save]でファイル名をつけて保存後、[Perl]-[Run]をタップすると、スクリプトが実行されます。 私の環境では、無事「Hello, World!」を見ることができました。
なお、PerlIDE上での実行では、スクリプトが終了するとすぐに結果表示が消えてしまいます。 PerlIDE下部右から2番目、緑の矢印付きのアイコンをクリックして、最後のSTDOUTへの出力を見ることもできますが、PerlCEのドキュメント(PerlCEDocument)では次のスクリプトのように<STDIN>を入れることを勧めています。
$| = 1; print "Hello, World!\n"; <STDIN>;
こうすると右図のように、出力後にENTERを押すまで、STDOUT画面が消えません。
次はこちら。 日本語を表示してみます。
print "ハロー、世界のみんな!\n";
PerlIDEでは編集画面のフォントを切り替えられるのですが、実行画面のフォントは切り替わらないようです。
ドキュメント(PerlCEDocument参照)によれば、Socket.pmを使うことができるとなっています。 とはいえ、Windows CE環境では、メールクライアントにはQMail、FTPクライアントにはCeder FTP、NewsクライアントにはKAWARAといった良いソフトがあります。 ここでは、Socketモジュールを使ったHTTPクライアントを作成し、実行します。
なお、HTTPクライアントのプログラミングについては解説しません。 インターネット上にはすでに良いスクリプトが多くありますし、自作したいのであれば「WebクライアントプログラミングWithPerl」などの書籍があります。
Socketモジュールを始め、いくつかのモジュールをWindows用のActivePerl環境からもらいます。 必要なファイルは次のとおりです。
これらのファイルは、Perlをインストールしたディレクトリのすぐ下、libディレクトリ内にあります。 ActivePerlのインストール先がC:\Perlの時は、C:\Perl\lib\になります。
ファイルが見つかったら、Active Sync等でPocketPC機にコピーし、Perlをインストールしたディレクトリのすぐ下、libディレクトリに移してください。 PerlCEInstallの私のディレクトリ構成に合わせている場合、「\UnixRoot?\Usr\Perl\lib」です。
次の「簡単なHTTPクライアント」ではjcode.pl(日本語の扱い?参照)を使用します。 このファイルも、同じlibディレクトリにコピーしておいてください。
「とほほのWWW入門」のPerl→Socketの項に簡単なHTTPクライアントが載っています。 これを使って、Yahoo!のトップページを取得してみます。 上のスクリプトに少し変更を加え、次のようなスクリプトにします。
require "jcode.pl";
$host = "www.yahoo.co.jp";
$page = "/";
$data = "";
$addr = (gethostbyname($host))[4];
$name = pack("S n a4 x8", 2, 80, $addr);
socket(S, 2, 1, 0);
connect(S, $name);
binmode(S);
select(S);
$| = 1;
select(stdout);
print S "GET $page HTTP/1.0\r\n\r\n";
while (<S>) { $data .= $_; }
close(S);
jcode::convert(\$data, 'sjis', 'euc');
print $data;
ダイアルアップ環境(Air H"など)の場合は、あらかじめダイアルアップ接続をしておいてください。 これを実行すると、右図のようにトップページのHTMLデータを取得でき、日本語も正しく表示されます。
「とほほのWWW入門」のスクリプトをそのまま実行すると、Yahoo!JapanのページがEUCで記述されているため、日本語部分は表示が化けてしまいます。 そこで一度、データを$dataに入れ、文字コード決め打ちでeucからsjisへの変換をしています。 なお、「ハロー!」と同様に実行時の画面では文字化けしますが、標準出力では正しく表示されています。
その他、PerlCEについて気づいたこと、考えていることなどを箇条書きで。
(ここにお書きください。)
[[#comment]]