Falko: get mit LWP::Simple

Hi,
Wenn ich mit

  
use LWP::Simple;  
my $dat=get("http://test.test/dat.txt");  

lese und die betreffende URL ist nicht vorhanden, erfolgt ein Eintrag im log.
Dies möchte ich vermeiden.
Auf meiner Suche habe ich gefunden:

head($url)

Get document headers. Returns the following 5 values if successful: ($content_type, $document_length, $modified_time, $expires, $server)

Returns an empty list if it fails. In scalar context returns TRUE if successful.

Also habe ich folgendes geschrieben:

  
use LWP::Simple;  
if (head("http://test.test/dat.txt")) {  
   {my $dat=get("http://test.test/dat.txt");  
#     ....  
}  

Jetzt kommt im Fehlerfalle kein Log-Eintrag, aber head liefert auch im Fehlerfalle true zurück.
Wo liegt mein Denkfehler?
Schöne Grüsse

  1. Wo liegt mein Denkfehler?

    Ich vermute:
    Wenn head einen Error 404 meldet, dann ist das True!
    Wenn keine Verbindung zum Server möglich ist, dann ist das False

    Ein head, der mit 404 beantwortet wird, erzeugt (in der Regel) ebenso einen Logeintrag.

    mfg Beat

    --
    Woran ich arbeite:
    X-Torah
       <°)))o><                      ><o(((°>o
    1. Ich vermute:
      Wenn head einen Error 404 meldet, dann ist das True!
      Wenn keine Verbindung zum Server möglich ist, dann ist das False

      Ein head, der mit 404 beantwortet wird, erzeugt (in der Regel) ebenso einen Logeintrag.

      Danke bis hierher.
      Du schreibst (in der Regel), heisst dies, dass man es auch unterdrücken kann?
      Ich möchte mir nicht das log vollschreiben lassen mit Fehlermeldungen, die in dem Zusammenhang unberechtigt sind.
      Falko

      1. Hi,
        habe es inzwischen mit LWP::UserAgent versucht, da erfolgt beim "Nichtvorhandensein" leider auch ein log-Eintrag.
        Kann man, falls in LWP::Simple nicht möglich wenigstens hier den Eintrag unterdrücken?

        Falko

        1. Hi,
          habe es inzwischen mit LWP::UserAgent versucht, da erfolgt beim "Nichtvorhandensein" leider auch ein log-Eintrag.
          Kann man, falls in LWP::Simple nicht möglich wenigstens hier den Eintrag unterdrücken?

          Das Serververhalten ist unabhängig vom Useragent, der einen Request absendet.

          Insofern man den Server konfigurieren kann, hat man Einfluss, was gelogged wird. Ist man bei einem normalen Hoster zuhause, liegt das ausser Reichweite.

          Die Frage ist nur, wenn der Zielserver in deiner Aufsicht liegt, solltest du wohl in der Lage sein, Requests zu lancieren, die in einem 200er Statusreport enden.

          mfg Beat

          --
          Woran ich arbeite:
          X-Torah
             <°)))o><                      ><o(((°>o
          1. Hi,

            Die Frage ist nur, wenn der Zielserver in deiner Aufsicht liegt,

            ... leider nicht!

            Gruß Falko

            1. Die Frage ist nur, wenn der Zielserver in deiner Aufsicht liegt,
              ... leider nicht!

              die wichtigere Antwort bist du schuldig geblieben. aber selbst dann, du kannst nicht mit Perl das Log Verhalten des Servers beeinflussen. Ein Request ist ein Request.

              Struppi.

  2. Nabend.

    Na wenn Du mal nich das Alter Ego von Konrad bist:

    http://forum.de.selfhtml.org/?t=174807&m=1148310

    Grüße

    1. Nabend.

      Na wenn Du mal nich das Alter Ego von Konrad bist:

      http://forum.de.selfhtml.org/?t=174807&m=1148310

      Wird nicht verraten! Kannst ja mal die Log-Daten durchforsten! Aber zur Frage hast Du wohl nichts beizutragen?
      Nacht

      1. Ahoi Falko / Konrad!

        Aber zur Frage hast Du wohl nichts beizutragen?

        Aber immer: Aus meiner Perspektive ist das hier ein zu schließendes Doppelposting.

        Grüße

        1. Aber immer: Aus meiner Perspektive ist das hier ein zu schließendes Doppelposting.

          Dann ändere mal deine Perspektive!

  3. Wo liegt mein Denkfehler?

    Lies die Doku, da ist explizit ausgeführt, wofür LWP::Simple gut ist und wofür nicht:

    "This module is meant for people who want a simplified view of the libwww-perl library. It should also be suitable for one-liners. If you need more control or access to the header fields in the requests sent and responses received, then you should use the full object-oriented interface provided by the LWP::UserAgent module."

    Willst Du an die Statuscodes rankommen bzw. willst die Methoden is_success bzw. is_error darauf anwenden *und* bei LWP::Simple bleiben, dann nimm getstore/getprint oder mirror. Da ich nicht weiß, was Du mit den eingelesenen Daten vorhast, entscheide selber. Allerdings zeigt meine bisherige Perl-Praxis, dass man LWP::UserAgent in 99% der Fälle vorziehen sollte.

    Siechfred

    --
    Obacht, hinter jedem noch so kleinen Busch könnte ein Indianer sitzen!