nadin: subroutine in subroutine ausführen?

hi,

ich wollt mal fragen ob es erlaubt ist eine subroutine in einer gerade laufenden subroutine zu starten.

wenn ja, wo muss die subroutine, die gestartet wird stehen. im programm oder in der laufenden subroutine.

danke im voraus

  1. Hallo,

    ich wollt mal fragen ob es erlaubt ist eine subroutine in einer gerade laufenden subroutine zu starten.

    Ui, da ist ja jemand übervorsichtig;-)

    Natürlich kann man in Perl Sub-Routinen aus anderen aufrufen. Auch rekursive Aufrufe, also in sich verschachtelte Aufrufe sind erlaubt. ein simples ausprobieren hätte da schon Gewissheit gebracht.

    wenn ja, wo muss die subroutine, die gestartet wird stehen. im programm oder in der laufenden subroutine.

    _Das_ findest Du in der dazugehörigen Dokumentation (perldoc perlsub).

    Grüße
      Klaus

    1. »» Natürlich kann man in Perl Sub-Routinen aus anderen aufrufen. Auch rekursive Aufrufe, also in sich verschachtelte Aufrufe sind erlaubt. ein simples ausprobieren hätte da schon Gewissheit gebracht.

      hi, man kann auch eine exit anweisung in eine subroutine schreiben und es funktioniert, aber es ist kein schöner programmierstil. deswegen wollt ich das wissen. :-)

      aber danke für die antwort

      1. Hallo nadin,

        hi, man kann auch eine exit anweisung in eine subroutine
        schreiben und es funktioniert, aber es ist kein schöner
        programmierstil.

        Warum nicht?

        Gruesse,
         CK

        --
        http://cforum.teamone.de/
        http://wishlist.tetekum.de/
        If God had meant for us to be in the Army, we would have been born with green, baggy skin.
        1. Halihallo Christian

          hi, man kann auch eine exit anweisung in eine subroutine
          schreiben und es funktioniert, aber es ist kein schöner
          programmierstil.
          Warum nicht?

          In http://forum.de.selfhtml.org/archiv/2003/7/53969/ wurde darüber diskutiert.

          Viele Grüsse

          Philipp

          --
          RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
          Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
        2. Halihallo Christian

          hi, man kann auch eine exit anweisung in eine subroutine
          schreiben und es funktioniert, aber es ist kein schöner
          programmierstil.
          Warum nicht?

          Sorry, der Thread enthält viel Themenfremdes. Meine Hauptaussage zu dieser Frage war:

          <cite>
          Es ist einfach unschön, das Programm in einer Schleife oder Prozedur zu beenden. Eine
          Prozedur ist eine "atomare" Verarbeitungsvorschrift und Atome soll man bekanntlich nicht
          spalten (exit zwischen drin), sonst fliegt einem das Haus um den Kopf :-)
          Der Aufbau des Programmes ist einfach schön hierarchisch aufgebaut und dies íst schönes
          Programmieren. Man könnte dies mit dem "goto"-Paradigma vergleichen: Das Umherspringen
          wird heute als schlechter Programmierstil gewertet, da der Programmfluss einfach sehr
          schwer nachzuvollziehen ist. Ähnlich ist es mit exit in Prozeduren.
          Oder anders: Eine Prozedur oder besser: eine Funktion gibt einen Wert zurück. Nach einer
          Funktion soll entweder weitergearbeitet werden, oder nicht (exit). Aber: Diese
          Entscheidung darf nicht bei der Funktion selber liegen, sondern vom äusseren
          Programmkontext. Ein anderes Programm braucht vielleicht dieselbe Funktion und will
          bei einem Fehler weiterarbeiten, ein exit wäre hier in der Funktion fatal. Wann ein
          Programm beendet wird ist von der Aufgabenstellung abhängig, nicht von einer Funktion.
          Demnach soll das Hauptprogramm entscheiden, wann schluss ist.
          </cite>

          gewesen. An die Threaddrift richtung Tainted-Modus und "use Carp" hatte ich mich nicht
          mehr erinnert.

          Viele Grüsse

          Philipp

          --
          RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
          Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
          1. Hallo,

            Es ist einfach unschön, das Programm in einer Schleife oder Prozedur zu beenden.

            Oder um einfach die Dokumentation zu exit() zu zitieren:

            Don't use exit to abort a subroutine if there's any chance that someone might want to trap whatever error happened. Use die instead, which can be trapped by an eval.

            In Modulen verwende ich grundsätzlich kein exit() um den Blackbox-Ansatz aufrecht zu erhalten. Im main-Kontext kann es aber andererseits durchaus vorkommen, daß ich in Prozeduren das eine oder andere exit() verwende. Dann allerdings i.d.R. in Verbindung mit einem END-Block, um allfällige Aufräumarbeiten zu erledigen.

            Warum Du allerdings in Schleifen auch kein exit() benuzen willst, kann ich nicht so wirklich nachvollziehen. EIn all zu starres Festhalten an irgendwelchen Programmierrichtlinien (die Betonung liegt auf 'starres') finde ich an sich nicht gut, da es schnell dazu kommt, daß sie dann dogmatisch angewandt werden. Und ich habe grundsätzlich was gegen Dogmen;-)

            Grüße
              Klaus