2016-06-21 4 views
1

läuft Ich versuche, Perl zu verwenden, um eine Publikationsliste zu kratzen wie folgt:Perl LWP :: Simple wird keine Webseite „bekommen“, wenn von Remote-Server

use XML::XPath; 
use XML::XPath::XMLParser; 
use LWP::Simple; 

my $url = "https://connects.catalyst.harvard.edu/Profiles/profile/xxxxxxx/xxxxxx.rdf"; 

my $content = get($url); 
die "Couldn't get publications!" unless defined $content; 

Als ich es auf meinem lokalen laufen (Windows 7) Maschine funktioniert es gut. Wenn ich versuche, es auf dem Linux-Server auszuführen, auf dem wir einige Websites hosten, stirbt es. Ich habe XML und LWP mit cpan installiert, damit diese da sein sollten. Ich frage mich, ob das Problem eine Art von Sicherheit oder Berechtigungen auf dem Server sein könnte (ohne Zugriff auf eine externe Website), aber ich weiß nicht einmal, wo ich damit anfangen soll. Irgendwelche Ideen? .

+0

Haben Sie versucht zu sehen, was '$!' Sagt? – squiguy

+3

Die Dokumente für 'get' empfehlen die Verwendung von' LWP :: UserAgent', wenn Fehler auftreten. – toolic

+0

$! sagt "Keine solche Datei oder Verzeichnis", so wird es wahrscheinlich blockiert, auf externe URLs zuzugreifen. Jetzt muss ich herausfinden, wie ich es entsperren kann. – Compysaurus

Antwort

4

Stellt sich heraus, ich nicht LWP :: Protocol hatte :: https“installiert ich dies durch

Schalt fand heraus
LWP::Simple 

zu

LWP::UserAgent 

und die folgenden:

my $ua = LWP::UserAgent->new; 
my $resp = $ua->get('https://connects.catalyst.harvard.edu/Profiles/profile/xxxxxx/xxxxxxx.rdf'); 
print $resp; 

Es gab dann einen Fehler zurück, der mir sagte, dass es das Protokoll nicht hatte, auf das https ohne LWP :: Protocol :: https zuzugreifen, so Ich installierte es mit

cpan LWP::Protocol::https 

und alles war gut.

Verwandte Themen