Vorwort: Ich weiß, wie man eine bestimmte Version eines Moduls lädt. Das ist nicht das wonach ich bin.Wie kann ich in Perl die Modulversion eines bestimmten Moduls ermitteln, das bereits geladen ist?
Ich schreibe ein Skript, um einige Text/Plain-Daten als JSON von einem internen Server in meiner Firma formatiert zu erhalten. Ich verwende LWP für den Datenabruf.
Ich habe alle das Skript selbst gemacht, aber ein Problem haben.
Ich schreibe dies auf RHEL5, die Perl 5.8.8 mit LWP 5.805 verwendet. Nach der folgenden Seite, wenn ich den Inhalt der Antwort direkt auf eine Datei ausgeben möchte, sollte ich verwenden :content_file => filename
JEDOCH wird Folgendes notiert.
Beachten Sie, dass diese „: content_file“ Option nicht unter älteren Versionen von LWP unterstützt wird, so dass Sie verwenden LWP Zugabe 5,66 berücksichtigen sollten; Überprüfen Sie die LWP-Version, wenn Sie glauben, dass Ihr Programm möglicherweise auf Systemen mit älteren Versionen ausgeführt wird.
Wenn Sie mit älteren LWP-Versionen kompatibel sein müssen, dann verwenden Sie diese Syntax, die die gleiche Sache tut:
use HTTP::Request::Common; $response = $ua->request(GET($url), $filespec);
Da dies RHEL 5, ich habe die ältere verwenden LWP-Format, aber ich möchte mein Skript so machen, dass es diesen neuen Stil anstelle des älteren Stils verwendet, wenn es auf RHEL 6 und höher ausgeführt wird, das eine neuere Version von LWP verwendet, die :content_file
unterstützt.
Daher muss ich wissen, wie das Modul Version zu erkennen, und was noch wichtiger ist, ich muss wissen, was die früheste LWP Version ist :content_file
Warum tun Sie nicht, wie der Kommentar suggeriert, und verwenden Sie einfach 'HTTP verwenden :: Request :: Common; $ response = $ ua-> request (GET ($ url), $ filespec) '' (unabhängig von der Version)? – ikegami
Das ist nur mit älteren Versionen. Ich denke nicht, dass die neueren Versionen das unterstützen. – Speeddymon
Das weitere Lesen der Kommentare zeigt, dass neuere Versionen abwärtskompatibel sind. – Speeddymon