これは私の最初の質問です(そしてperlの対象のどこでも)。 私はop5/nagiosで使うためのスクリプトを書こうとしています。 これは、データベースに接続して値を取得し、Webサービスに要求を送信し、Webサービスからの応答をデータベースの値と一致させることを試みます。Perl :: WSDL。スクリプトとは別の方法で生成されたメソッド
今、スクリプトを書くことは問題ではありませんでした。問題はOP5から実行しようとすると発生します。
スクリプトへのインターフェイスを含め、私は「MyInterfaces」と同じレベルにあるスクリプトを実行したときにこれがうまく機能し、次の構文
use MyInterfaces::PortalServicesImplService::PortalServicesImplPort;
を使用しています。
問題は、スクリプト自体がwsdl2perl.plによって生成されたスクリプトとフォルダの両方が配置されている/ opt/plugins/custom/SOAPフォルダにあることです。ただし、OP5が実行されるときは、/ opt/monitorフォルダからスクリプトが実行されます。
だから私は「PortalServicesImplPort」を含むしようとした
use lib "/opt/plugins/custom/SOAP/MyInterfaces/PortalservicesImplServices/PortalServicesImplPort
この構文を使用してコードをコンパイルし、それを実行しようとしたとき、私は Can't locate object method "new" via package "MyInterfaces::PortalServicesImplService::PortalServicesImplPort" (perhaps you forgot to load "MyInterfaces::PortalServicesImplService::PortalServicesImplPort"?)
私が何かをやっていると言って、エラーメッセージが表示されます別の場所からメソッドをインポートするときに間違っているか、またはSOAP :: WSDLが、スクリプトを実行している場所とは異なるディレクトリに自動生成されたファイルを置くことをサポートしていませんか?
何かありがとうございました!マーカス
追加することで、この自分自身を解決するために管理さそうです。私が別の場所からそれらを使用できるようにするためには、スクリプトが実行されるときに場所を変更したり、メソッドがどこからインポートされるのかを判断しなければならないと思われます。 – user599703
私はこれを自分自身で解決することができたようだ。
use lib "/opt/plugins/custom/SOAP
– user599703