スターマンとの整理下でのダイナミックパッケージの読み込み

StackOverflow https://stackoverflow.com/questions/8813114

  •  26-10-2019
  •  | 
  •  

質問

スターマンとの策略の下でWebアプリを実行しており、ユーザー要求に基づいてパッケージを動的にロードしてインスタンス化しようとしています。私は「$ packageNameが必要です;」を使用しています。 $ packageNameにパッケージの名前が含まれているパッケージをロードするには、名前が構成ファイルに保存されます。次に、すべてのクラスが基本クラスから継承され、一連の既知のメソッドが含まれているため、インスタンスで既知のコマンドセットを実行します。

これはApacheの下では正常に機能しますが、何らかの理由で、@Incにはライブラリパスが含まれていても、パッケージ名がLIBパスの最後のディレクトリから絶対的であるにもかかわらず、パッケージを見つけることができないと言っています。つまり、パッケージ名はベース::私の::パッケージになります。

誰かがこの問題を経験していますか?スターマン内の他のパスを更新する必要がありますか? -Iフラグを使用してプラックアップを実行し、環境Perl5Lib変数を更新しています。私も試しました 'use lib /...' メインアプリクラスでは、これらの作業はありません。

ありがとう

役に立ちましたか?

解決

require Barewordsとして指定されている場合、モジュール名(Scalar :: utilなど)のみを受け入れます。あなたが与えるなら require 文字列、その後、モジュール(Scalar/util.pmなど)への相対的なパスである必要があります。これを行うことでこれを回避できます require 内部 eval (の文字列パラメーター形式 eval)、例 eval "require $package".

見る マシンにインストールされているモジュールのリストを確認してください

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top