xtomcatx: Warnung "use of uninitialized value" vermeiden

Hallo,
ich lasse mir für eine DB-Abfrage Hash-Referenzen zurückgeben (DBI und fetchrow_hashref). Jetzt kommt es natürlich vor, dass nicht alle Spalten gefüllt sind. Das ist klar und darf auch so sein. Wie kann ich beim Ausgeben der Hash-Werte verhindern, dass die Meldung "Use of uninitialized value..." ins Log geschrieben wird?
bspw. sowas wie "use unstrict subs;". Sonst müsste ich, um ein sauberes Log zu haben, jeden Hash durchlaufen und unbenutzte Schlüssel initialisieren. Das kann doch nicht Sinn und Zweck der Sache sein?!?

Danke und viele Grüße,
Martin

  1. Okay, da war ich etwas zu schnell. "no warnings;" funktioniert. kann ich denn noch nur diese eine Warnung abschalten?
    oben meinte ich "no strict "subs"".

    1. Sorry für diesen unnötigen Thread

      no warnings 'uninitialized';

      1. Moin!

        Sorry für diesen unnötigen Thread

        no warnings 'uninitialized';

        Das möglichst nur im betreffenden Block. Gegebenenfalls einen Block neu schaffen:

          
        {   no warnings 'uninitialized';  
            # hier die Ausgaben...  
        }  
        
        

        Ich ziehe es eist vor, explizit die Werte, die uninitialisiert sein dürfen, vor der Weiterverarbeitung auf gefahrlose Werte zu setzen und kein "no warnings" zu verwenden:

          
        $integer||= 0;  
        $string||= '';  
        
        

        -- Skeeve

        1. Hallo, dankeschön.
          Das mit dem Block ist mir klar, aber die andere Zuweisung sieht auch gut aus. Sehe ich das richtig, dass
          $str ||= '';
          das gleiche bedeutet wie
          $str = $str ? $str : '';
          nur etwas schlanker, oder?

          Was bedeutet |= ? Kann mir jemand sagen, wo ich zu diesen spezielleren Zuweisungsoperatoren was in der Perldoc finde?

          Gruß Martin

          1. Das mit dem Block ist mir klar, aber die andere Zuweisung sieht auch gut aus. Sehe ich das richtig, dass
            $str ||= '';
            das gleiche bedeutet wie
            $str = $str ? $str : '';
            nur etwas schlanker, oder?

            nein, es bedeutet:

            $str = $str ||  '';

            Struppi.

            --
            Javascript ist toll (Perl auch!)
          2. Moin!

            $str ||= '';
            das gleiche bedeutet wie
            $str = $str ? $str : '';

            Der Effekt ist derselbe. Es ist aber eher sowas wie:
            $str= '' unless $str;

            Was bedeutet |= ?

            Bitweises Oder -> $i= 12; $i|=3; ergibt $i == 15

            Verwendet habe ich aber das logische Oder ||

            Kann mir jemand sagen, wo ich zu diesen spezielleren Zuweisungsoperatoren was in der Perldoc finde?

            Müßte ich auch suchen.

            -- Skeeve

            1. $str ||= '';
              das gleiche bedeutet wie
              $str = $str ? $str : '';
              Der Effekt ist derselbe. Es ist aber eher sowas wie:
              $str= '' unless $str;

              Naja, es ist das gleiche wie bei den anderen kombinierten Operatoren wie z.b. += oder *=

              var = var op value;

              Struppi.

              --
              Javascript ist toll (Perl auch!)
            2. Hell-O!

              Kann mir jemand sagen, wo ich zu diesen spezielleren Zuweisungsoperatoren was in der Perldoc finde?
              Müßte ich auch suchen.

              Ach komm, perlop ist doch nicht sooo schwer zu finden ;-)

              Siechfred

              --
              Ich bin strenggenommen auch nur interessierter Laie. (molily)
              Siechfreds Tagebuch || Falle Aufteilungsbescheid || RT 221 Erfurt-Altstadt i.V.
              1. Moin!

                Ach komm, perlop ist doch nicht sooo schwer zu finden ;-)

                Da hatte ich sogar flüchtig reingeschaut. Da ich aber nicht auf Anhieb das passende gefunden hatte, hat mein innerer "fauler sack" gesiegt.

                -- Skeeve

  2. ich lasse mir für eine DB-Abfrage Hash-Referenzen zurückgeben (DBI und fetchrow_hashref). Jetzt kommt es natürlich vor, dass nicht alle Spalten gefüllt sind. Das ist klar und darf auch so sein. Wie kann ich beim Ausgeben der Hash-Werte verhindern, dass die Meldung "Use of uninitialized value..." ins Log geschrieben wird?

    Am einfachsten in dem du prüfst ob die Werte initialisiert sind.

    Struppi.

    --
    Javascript ist toll (Perl auch!)