Gerhard: Nicht verwendete Skalare, arrays,.... herausfinden

Hi,
kennt jemand eine einfache Möglichkeit, herauszufinden, ob ein deklarierter Skalar u.a. im Programm angesprochen wird - notfalls ein Programm, das das Vorkommen zählt?

  1. Hi,
    kennt jemand eine einfache Möglichkeit, herauszufinden, ob ein deklarierter Skalar u.a. im Programm angesprochen wird - notfalls ein Programm, das das Vorkommen zählt?

    Ja klar: use strict

    Greetz,
    Erwin

    1. use strict verwende ich bereits und warnings sind auch eingeschaltet. Diese sind meines Wissens gut, um zu erfahren, ob eine verwendete Variable auch feklariert ist, nicht aber für den umgekehrten Fall.

      1. use strict verwende ich bereits und warnings sind auch eingeschaltet. Diese sind meines Wissens gut, um zu erfahren, ob eine verwendete Variable auch feklariert ist, nicht aber für den umgekehrten Fall.

        Nee, umgekehrt.
        mit strict _mußt_ Du eine Variable deklarieren.
        Dabei ist sie bzgl. warnings auch direkt benutzt.
        Schalte strict (kurzzeitig) aus und nimm das "my" vor der Variablen weg.

        Was Erwin sagte, ist def. falsch, aber der Link ist gut.
        Es steht auch ein Beispiel dort.

        Gruß
        Reiner

        1. use strict verwende ich bereits und warnings sind auch eingeschaltet. Diese sind meines Wissens gut, um zu erfahren, ob eine verwendete Variable auch feklariert ist, nicht aber für den umgekehrten Fall.

          Nee, umgekehrt.
          mit strict _mußt_ Du eine Variable deklarieren.

          Sag ich ja:
          Bei strict kommt ein Fehler, wenn eine Variable im Programm angesprochen wird, aber nicht deklariert ist.
          Es kommt aber kein Fehler, wenn ich eine Variable deklariere und sie dann nie anspreche.

          1. Bei strict kommt ein Fehler, wenn eine Variable im Programm angesprochen wird, aber nicht deklariert ist.
            Es kommt aber kein Fehler, wenn ich eine Variable deklariere und sie dann nie anspreche.

            Wenn du sie mit my deklarierst, dann sprichst du sie auch an. Wo ist das Problem?

            Struppi.

            1. Bei strict kommt ein Fehler, wenn eine Variable im Programm angesprochen wird, aber nicht deklariert ist.
              Es kommt aber kein Fehler, wenn ich eine Variable deklariere und sie dann nie anspreche.

              Wenn du sie mit my deklarierst, dann sprichst du sie auch an. Wo ist das Problem?

              daß keiner liest!
              Strict hat mit dem Problem eher wenig zu tun, sondern die warnings.

              Gruß
              Reiner

        2. Was Erwin sagte, ist def. falsch, aber der Link ist gut.
          Es steht auch ein Beispiel dort.

          Das Beispiel finde ich leider nicht. Mit welchem Begriff hast Du dort gesucht?

          1. Was Erwin sagte, ist def. falsch, aber der Link ist gut.
            Es steht auch ein Beispiel dort.
            Das Beispiel finde ich leider nicht. Mit welchem Begriff hast Du dort gesucht?

            Reiner hat Recht, strict meckert in dem Fall nur, wenn eine Variable nicht explizit deklariert wurde. In diesem Beispiel steckt die von Reiner angesprochene Lösung.

            Greetz,
            Erwin

            1. In diesem Beispiel steckt die von Reiner angesprochene Lösung.
              Nein!
              Es wird ja nicht erkannt, dass $line zwar definiert ist aber nie angesprochen wird. Wenn die Zeile 4 mit $lin weggelassen wird, kommt kein Fehle)!

              1. In diesem Beispiel steckt die von Reiner angesprochene Lösung.
                Nein!
                Es wird ja nicht erkannt, dass $line zwar definiert ist aber nie angesprochen wird. Wenn die Zeile 4 mit $lin weggelassen wird, kommt kein Fehle)!

                Natürlich wird $line angesprochen.

                Struppi.

  2. Hi,
    kennt jemand eine einfache Möglichkeit, herauszufinden, ob ein deklarierter Skalar u.a. im Programm angesprochen wird - notfalls ein Programm, das das Vorkommen zählt?

    schalte mit -w die warnings ein.

    Gruß
    Reiner

  3. kennt jemand eine einfache Möglichkeit, herauszufinden, ob ein deklarierter Skalar u.a. im Programm angesprochen wird - notfalls ein Programm, das das Vorkommen zählt?

    Mit den Bordmitteln wüsste ich keine Möglichkeit. Da nutzt es weder die Warnungen anzuschalten noch das strict-Pragma zu nutzen, denn eine unnötigerweise deklarierte Variable wird dadurch nicht angemeckert. Du kannst Prozesse überwachen, dafür gibt es die Modulgruppe Devel:: (so auf den ersten Blick könnten Devel::Monitor oder Devel::Spy interessant sein).

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
    1. kennt jemand eine einfache Möglichkeit, herauszufinden, ob ein deklarierter Skalar u.a. im Programm angesprochen wird - notfalls ein Programm, das das Vorkommen zählt?

      Mit den Bordmitteln wüsste ich keine Möglichkeit. Da nutzt es weder die Warnungen anzuschalten noch das strict-Pragma zu nutzen, denn eine unnötigerweise deklarierte Variable wird dadurch nicht angemeckert.

      Ich denke auch das es dafür irgendwelche Debug Funktion gibt, aber ich frage mich wofür?

      Wenn ich glaube ich habe eine überflüssige Variabel, dann kann ich einfach die my Deklaration rausschmeissen und dann wird mir das Skript schon sagen, ob ich diese verwende oder nicht (vorraus gesetzt use strict ist eingebunden) und umgekehrt, wenn ich eine Variabel mit my doppelt deklariere, dann meckert warnings. Also ausser für irgendwelche Expermimente sehe ich darin keinen Sinn, aber dann dürfte bei den von dir genannten Modulen sicher etwas dabei sein (ich kann mich auch an eine Diskussion in der Newsgroup über das thema erinnern, evtl. findet der OP dort etwas)

      Struppi.