- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:pp (Perl Packager) で requireの代わりになるもの)
ppでのrequire代替方法とは?
このQ&Aのポイント
- ActivePerl v5.8.7を使用している場合、pp(Perl Packager)を使用してオリジナルのスクリプトをexe形式に変換することができますが、他のPCで実行する際にrequire先のファイルが見つからないというエラーが発生します。
- 一時凌ぎとして、requireの代わりにモジュールファイルの内容をペーストする方法がありますが、これは正しい解決策ではありません。
- ppで完全にパッケージ化するか、モジュールをインストールすることで他のPCでも正常に実行できるようにすることができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
userfunc.pmをsample.plと同じフォルダに入れて pp -o sample.exe sample.pl userfunc.pm としたらどうですか? こちらで試したところではパスを\ではなく / で指定すれば大丈夫のようでしたが、、、 i:\home\tarou\pblic_html\test.pl i:\home\jcode.pl の場合に test.pl中にrequire "i:/home/jcode.pl"; と記述して pp -o test.exe testpl i:\home\jcode.pl だと実行時にエラー pp -o test.exe testpl i:/home/jcode.pl だと実行可能 でした。
お礼
お返事が遅くなり、大変申し訳ありません。 ご回答ありがとうございました。 教えて頂いた方法を参考に、次のようにしました。 (1)スクリプト内では、require "userfunc.pm";のようにパス名なしのファイル名を記述。 (2)ppコンパイル時に、 /I オプションを付けて、c:\\perl\\sub のパスを明示。 こうすることで、exeの中にモジュールファイルも組み込まれるようで、 他のPerlを入れていないPCへ持っていっても使うことができるようになりました。 以上、遅くなりましたが、お礼まで。
補足
Makefileで汎用的に書いてみました。私自身用にもメモ。 # Makefile for Perl Package SRC = \ sample.pl \ INC = \ c:\perl\sub \ TARGET = $(SRC:.pl=.exe) # PL (*.pl) PP = pp ### rules ### all: $(TARGET) .SUFFIXES: .pl .exe .pl.exe: $(PP) $< -I $(INC) -o $@