Wie bekomme ich die Ausgabe von curl in eine Variable in Perl, wenn ich sie mithilfe von Backtics aufrufe?

7

Ich versuche die Antwort eines Curl-Aufrufs in eine Variable in Perl zu bekommen.

%Vor%

funktioniert nicht. Wenn ich dies in der Befehlszeile ausführe, druckt der Curl-Aufruf alle seine Ausgaben korrekt im Terminal, aber die Variable ist nicht mit diesen Daten gefüllt.

Gibt es eine Möglichkeit, dies zu tun, ohne die Perl curl lib zu installieren und aufzurufen?

    
Genia S. 18.06.2009, 22:00
quelle

8 Antworten

12

Wahrscheinlich schickt es seine Sachen zu stderr. Probieren Sie

aus %Vor%     
sunny256 18.06.2009, 22:03
quelle
5

Sie können sich auch den LWP :: UserAgent ansehen oder sogar LWP :: Simple .

    
jiggy 19.06.2009 01:16
quelle
4

Was möchten Sie wirklich tun? Verwenden Sie curl um jeden Preis, oder greifen Sie auf den Inhalt einer Webseite?

Eine bessere Möglichkeit, dies zu tun (die auf keine externen Programme angewiesen ist, die möglicherweise auf dem nächsten Rechner installiert sind, auf dem Sie dies tun müssen), wäre:

%Vor%

Wenn Sie sehen möchten, warum das GET fehlgeschlagen ist, oder mehrere Seiten von derselben Website erfassen, müssen Sie etwas mehr Maschinen verwenden. perldoc lwpcook wird Sie starten.

    
dland 21.06.2009 11:47
quelle
3

In der Shell 2> bedeutet Weiterleitungs-Fileno 2. Fileno 2 ist immer was ein Programm als stderr sieht. Ähnlich ist fileno 0 stdin und fileno 1 ist stdout. Wenn Sie also 2>&1 sagen, sagen Sie der Shell, stderr (fileno 2) in stdout umzuleiten (fileno 1). Da der Backticks-Operator die Shell zum Ausführen des von Ihnen angegebenen Befehls verwendet, können Sie die Shell-Umleitung verwenden, also

%Vor%

sagt curl, seine Ausgabe in stdout umzuleiten, und da der backtick-Operator stdout abfängt, bekommen Sie, wonach Sie gesucht haben.

    
Chas. Owens 18.06.2009 22:14
quelle
0

Versuchen Sie Folgendes:

%Vor%

curl zeigt Fortschrittsinformationen auf stderr an. Das Umleiten auf / dev / null macht es einfacher zu sehen, was vor sich geht.

    
brian-brazil 18.06.2009 22:06
quelle
0

Dies funktioniert auf meinem System:

%Vor%

usw.

    
Sinan Ünür 18.06.2009 22:09
quelle
0

Sie können eine Pipe so öffnen, als wäre es eine Datei.

%Vor%     
jpenkethman 22.05.2014 05:44
quelle
-1

Es kann sein, dass ein Teil der Ausgabe, die Sie erfassen möchten, in Standardfehler und nicht in Standardausgabe liegt. Versuchen Sie Folgendes:

%Vor%     
pjb3 18.06.2009 22:06
quelle

Tags und Links