パスワードを忘れた? アカウント作成
739084 journal

enhydraの日記: PerlのBytecode

日記 by enhydra

% perl -MO=Bytecode script.pl > bytecode

でPerlの中間コードを出力し、そのバイトコードファイルの先頭に

#!/usr/bin/perl
use ByteLoader;

と付け足せば、その中間コードを読み取って実行することができる。
# モジュールの場合は use ByteLoader; だけでいいけど

で、いろいろ遊んでみたところ

○ FreeBSD + perl5.6.0で作ったバイトコードは当然 FreeBSD上で実行可能。
○ FreeBSD + perl5.6.0で作ったバイトコードはSolaris2.6 + perl5.6.0でも実行可能(ステキッ!)
× FreeBSD + perl5.6.0で作ったバイトコードはWindows2000 + Cygwin + perl5.6.1では実行不可能
× Windows2000 + Cygwin + perl5.6.1ではバイトコードの作成が不可能
× Solaris2.6 + perl5.6.0ではバイトコード作成不可能
× Solaris2.6 + perl5.6.1でもバイトコード作成不可能

という感じになった。まだ実験的な仕組みだからしょうがないのかなー。Linuxなホストはリーチャブルな所に無かったので試して無い。あ、MacPerl5.6.1a5が出たから入れないと。

typodupeerror

目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond

読み込み中...