Question

Je suis en cours d'exécution d'une application Web sous plackup avec Starman et en essayant de charge dynamique et paquets instancier en fonction des demandes des utilisateurs. J'utilise 'require $ packageName;' pour charger le package où $ packageName contient le nom du package, les noms sont stockés dans un fichier de configuration. Je puis exécuter un ensemble connu de commandes sur l'instance que toutes les classes héritent d'une classe de base et contiennent un ensemble de méthodes connues.

Cela fonctionne bien sous Apache, mais pour une raison plackup dit qu'il ne peut pas trouver le paquet même si @INC contient le chemin bibliothèque et les noms de paquets sont absolu du dernier répertoire dans le chemin lib. C'est le nom du package de base serait :: Mon :: Package.

expérience Toute personne cette question? Ai-je besoin de mettre à jour un autre chemin à l'intérieur Starman? J'exécute plackup avec le drapeau -I ainsi que la mise à jour de mon variable d'environnement PERL5LIB. J'ai aussi essayé 'use lib /...' dans la classe principale de l'application, mais aucun de ces travaux.

Merci

Était-ce utile?

La solution

require acceptera uniquement les noms des modules (par exemple Scalar :: Util) quand ils sont spécifiés comme barewords. Si vous donnez require une chaîne, il doit être un chemin par rapport au module (par exemple Scalar / Util.pm). Vous pouvez contourner ce problème en faisant l'require l'intérieur d'un eval (la forme chaîne de paramètres de eval), par exemple eval "require $package".

Consultez la liste des modules installés dans la machine

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top