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で質問しましょう!
似たような質問が見つかりました
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Perl perlの構文でカンマの意味が分からない 2 2022/10/30 01:53
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- 英語 The crestal approach works well in single or two a 2 2022/04/19 18:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
P.Cのシングルチューナーとダブ...
-
テキストファイルで提出とは?
-
Perlで、「が」を、「...
-
Perl LINE(チャット) 仕組み
-
Perlのエラーについてご教授く...
-
ファイルアイコンの左下に緑の□...
-
TeraPadエディターの操作方法に...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
-
perlについての質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlソースコードをコンパイル...
-
プロシージャの戻り値を取得す...
-
Perlで環境変数を設定するには
-
systemの引数の中括弧
-
perlでコマンドプロンプト実行
-
system関数を使用してJava実行...
-
Cygwin上でperlスクリプトの実行
-
Perlのexitについて
-
PERLからcshellを実行したいの...
-
Perlスクリプトが実行できない...
-
pp (Perl Packager) で require...
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 定義されたプロージ...
-
例外処理のフローチャートの記...
-
ArduinoのジャイロモジュールMP...
-
ユーザー定義関数に#NAME?が返...
-
「デバイスは PRN を初期化でき...
-
VBAで別モジュールへの変数の受...
-
エクセルVBAでシートモジュール...
-
Excel VBA 『Call』で呼び出す...
おすすめ情報