スターマンとの整理下でのダイナミックパッケージの読み込み
質問
スターマンとの策略の下でWebアプリを実行しており、ユーザー要求に基づいてパッケージを動的にロードしてインスタンス化しようとしています。私は「$ packageNameが必要です;」を使用しています。 $ packageNameにパッケージの名前が含まれているパッケージをロードするには、名前が構成ファイルに保存されます。次に、すべてのクラスが基本クラスから継承され、一連の既知のメソッドが含まれているため、インスタンスで既知のコマンドセットを実行します。
これはApacheの下では正常に機能しますが、何らかの理由で、@Incにはライブラリパスが含まれていても、パッケージ名がLIBパスの最後のディレクトリから絶対的であるにもかかわらず、パッケージを見つけることができないと言っています。つまり、パッケージ名はベース::私の::パッケージになります。
誰かがこの問題を経験していますか?スターマン内の他のパスを更新する必要がありますか? -Iフラグを使用してプラックアップを実行し、環境Perl5Lib変数を更新しています。私も試しました 'use lib /...'
メインアプリクラスでは、これらの作業はありません。
ありがとう
解決
require
Barewordsとして指定されている場合、モジュール名(Scalar :: utilなど)のみを受け入れます。あなたが与えるなら require
文字列、その後、モジュール(Scalar/util.pmなど)への相対的なパスである必要があります。これを行うことでこれを回避できます require
内部 eval
(の文字列パラメーター形式 eval
)、例 eval "require $package"
.
所属していません StackOverflow