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が出たから入れないと。