ActivePerl v5.8.7 をWin-2000で使っています。
オリジナルのスクリプト内で、これもオリジナルのモジュールをrequireしている場合に、
ppでexe形式に変換できるのですが、他のPCでコピーして使おうとしたときに、
”require先のファイルが無い”とエラーになってしまいます。
これを回避する方法はないでしょうか?
(requireの代わりに、該当箇所にモジュールファイルの内容すべてをペーストしてしまう、ということで一時凌ぎはできるのですが、何か違うような気がしています)
よろしくお願いいたします。
------------------------
#!perl
require "c:\\perl\\sub\\userfunc.pm";
:
:
------------------------
pp -o sample.exe sample.pl c:\perl\sub\userfunc.pm
とやって、exeを作っています。
(c:\perl\sub\userfunc.pmを持たないPCで)実行すると、
C:\>sample.exe
Can't locate c:\perl\sub\userfunc.pm in @INC (@INC contains: ・・・/inc CODE(0xdca6ac) . CODE(
0xdca7cc)) at script/sample.pl line 2.
No.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 だと実行可能 でした。
参考URL:http://www.perldoc.jp/docs/modules/PAR-0.75/scri …
この回答への補足
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 $@
お返事が遅くなり、大変申し訳ありません。
ご回答ありがとうございました。
教えて頂いた方法を参考に、次のようにしました。
(1)スクリプト内では、require "userfunc.pm";のようにパス名なしのファイル名を記述。
(2)ppコンパイル時に、 /I オプションを付けて、c:\\perl\\sub のパスを明示。
こうすることで、exeの中にモジュールファイルも組み込まれるようで、
他のPerlを入れていないPCへ持っていっても使うことができるようになりました。
以上、遅くなりましたが、お礼まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlのexitについて
-
system関数を使用してJava実行...
-
Perlソースコードをコンパイル...
-
例外処理のフローチャートの記...
-
エクセルVBAでシートモジュール...
-
Excel VBAで、ユーザーフォーム...
-
VBAで別モジュールへの変数の受...
-
グラフのX,Y座標を取得したい
-
Cからシェルを起動し返り値をハ...
-
VBAで旧字体を異字体に一括で変...
-
acwzlibとは?
-
Perl モジュールのアンインスト...
-
ユーザー定義関数に#NAME?が返...
-
ExcelVBA AddinでOnAction
-
YAMLについて
-
VBSがコンパイルエラーになりま...
-
VBA ユーザーフォーム Image1 ...
-
CPANモジュール取得におけるmak...
-
LCD ディスプレイを Raspberry ...
-
【vba】フォームに書いてあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlソースコードをコンパイル...
-
プロシージャの戻り値を取得す...
-
Perlで環境変数を設定するには
-
system関数でCシェルコマンドを...
-
cgiを実行可能にするには
-
外部CGIの実行結果を変数内に取...
-
UNIX SUN Solarisで時間の演算
-
VB.NETからPerlを呼び出す
-
Cygwin上でperlスクリプトの実行
-
system関数を使用してJava実行...
-
これをビジュアルスタジオで実...
-
Perlスクリプトが実行できない...
-
-i -e "s|^.|ok|" ./text どこ...
-
perlで 引数1を別リストの複数...
-
Apacheのログからアクセス履歴...
-
Perl リスト内指定回数繰り返し
-
DBIのupdateのプレースフォルダ
-
Windows版Perlの標準入力&標準...
-
コードを一行ずつ実行したい。
-
例外処理のフローチャートの記...
おすすめ情報