Stefan: Perl Programm "Gesprächig" machen...

Guten Morgen allerseits,

mich plagt mal wieder ein kleines Problem bei dem ich nicht so richtig weiterkomme.

Ich hab ein kleines Perl-Programm das wunderprächtig funktioniert und bei dem ich nun so eine Art "Gesprächig"-Modus einbauen will.
Das heißt wenn ich dem Programm beim aufrufen '-g' als Parameter mitübergebe soll er mir zum Beispiel jeden kleinen Arbeitsschritt mitausgeben. Ohne '-g' soll er nix ausgeben, also so tun als wenn alle print Anweisungen auskommentiert wären..

Aufruf: perl test.pl -g

Programm:

#!/usr/local/bin/perl -w

$Parameter= $ARGV[0];
....

if ($Parameter eq '-g')
{ print "Arbeitsschritt der gerade ausgefhrt wird" }

Wie im Beispiel zu sehen wäre es ziemlich aufwendig vor jede Stelle die ich mir im Gesprächig"-Modus ausgeben lassen will eine if-Abfrage zu setzen...nicht zu vergessen das dadurch der Quellcode total unleserlich werden würde!!

Meine Frage ist also: Gibt es eine kürze Möglichkeit mir mein Proggi gesprächig zu machen...?? Vielleicht eine der STD....

ich bin für jeden Vorschlag dankbar!

grüßle
Stefan

  1. Meine Frage ist also: Gibt es eine kürze Möglichkeit mir mein Proggi gesprächig zu machen...?? Vielleicht eine der STD....

    Hallo,
    in Perl kenne ich mich zwar leider nicht so gut aus, aber allgemein würde ich so was über eine Funktion lösen.
    Du bastelst einfach eine Funktion, z.B. namens showError(), die als Parameter den Fehlertext erwartet, also z.B. showError("Ich bin hier");. Diese Funktion überprüft dann, ob eine bestimmte Variable gesetzt ist oder nicht und gibt falls ja den Text aus.

    Uwe

  2. Guten Morgen allerseits,

    moin,

    mich plagt mal wieder ein kleines Problem bei dem ich nicht so richtig weiterkomme.

    Ich hab ein kleines Perl-Programm das wunderprächtig funktioniert und bei dem ich nun so eine Art "Gesprächig"-Modus einbauen will.
    Das heißt wenn ich dem Programm beim aufrufen '-g' als Parameter mitübergebe soll er mir zum Beispiel jeden kleinen Arbeitsschritt mitausgeben. Ohne '-g' soll er nix ausgeben, also so tun als wenn alle print Anweisungen auskommentiert wären..

    Dafür kannst Du das Modul Getopt einbinden. Näheres steht in der Dokumentation.

    Rolf

  3. Sup!

    Schreib' halt:

    $DEBUG = ($ARGV[0] eq '-d');

    und dann

    warn "Hilfe - gefährlicher Fehler!" if $DEBUG;

    überall da, wo's Not tut. Sind nur 9 Zeichen mehr zu tippen, und ggf. kannst Du die "warn" Zeilen ganz locker aus dem Quellcode rausfiltern.

    Gruesse,

    Bio

    --
    Ich bin ein Mobber - mein Posting tut mir leid! EHRLICH!!!
  4. Hi,

    Ich hab ein kleines Perl-Programm das wunderprächtig funktioniert und bei dem ich nun so eine Art "Gesprächig"-Modus einbauen will.
    Das heißt wenn ich dem Programm beim aufrufen '-g' als Parameter mitübergebe

    Du solltest "-v" für "verbose" wählen. Dieses Argument ist jedenfalls hierfür international gebräuchlich.

    #!/usr/local/bin/perl -w

    use strict; # ?

    $Parameter= $ARGV[0];

    perldoc Getopt::Std

    Ferner lies bitte in perldoc perlstyle nach, wie Variablennamen gewählt werden sollten.

    Wie im Beispiel zu sehen wäre es ziemlich aufwendig vor jede Stelle die ich mir im Gesprächig"-Modus ausgeben lassen will eine if-Abfrage zu setzen...nicht zu vergessen das dadurch der Quellcode total unleserlich werden würde!!

    Wenn Du eine Variable $verbose oder $is_verbose deklarierst, wird es lesbarer.

    Meine Frage ist also: Gibt es eine kürze Möglichkeit mir mein Proggi gesprächig zu machen...?? Vielleicht eine der STD....

    Uwes Tipp ist nicht von der Hand zu weisen: Leite jede (potentielle) Ausgabe über eine Funktion, die diese Prüfung erledigt. Ob diese nun &showError() heißen muss, sei dahingestellt :-)

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Uwes Tipp ist nicht von der Hand zu weisen: Leite jede (potentielle) Ausgabe über eine Funktion, die diese Prüfung erledigt. Ob diese nun &showError() heißen muss, sei dahingestellt :-)

      showError war eigentlich nur als Beispiel gedacht, um das ganze etwas anschaulicher darzustellen. Ist natürlich nicht unbedingt ein vernünftiger Name für eine Funktion.

      1. Hi,

        showError war eigentlich nur als Beispiel gedacht, um das ganze etwas anschaulicher darzustellen.

        war mir schon klar, ich hab nur noch mal "vorsichtshalber" darauf hingewiesen.

        Ist natürlich nicht unbedingt ein vernünftiger Name für eine Funktion.

        Doch, wenn sie den Zweck hat, Fehler auszugeben... ;-)

        Cheatah

        --
        X-Will-Answer-Email: No
    2. Hi,

      Du solltest "-v" für "verbose" wählen. Dieses Argument ist jedenfalls hierfür international gebräuchlich.

      ok, klingt gut, verbose für "wortreich", macht Sinn!

      perldoc Getopt::Std

      Also wenn ich das jetzt richtig verstanden habe, macht dieses Getopt folgendes:

      use Getopt::Std;
      getopt('oDI');    # $opt_o,$opt_D,$opt_I werden gesetzt (also =1)

      meine eigentliche Abfrage muss ich dann trotzdem noch mit einem if Abfragen, oder?

      Ferner lies bitte in perldoc perlstyle nach, wie Variablennamen gewählt werden sollten.

      ja, ich weis, mein Chef hat mir auch schon eins aufn Deckel gegeben, weil die Variablen unter aller Sau sind....*sorry*

      Uwes Tipp ist nicht von der Hand zu weisen: Leite jede (potentielle) Ausgabe über eine Funktion, die diese Prüfung erledigt. Ob diese nun &showError() heißen muss, sei dahingestellt :-)

      die Idee mit der Funktion ist in der Tat nicht schlecht, wie immer kommt man selbst nicht auf die simpelsten Lösungen....*Asche auf mein Haupt!!*

      ihr habt mir jedenfalls schon ein ganzes Stück weitergeholfen....Danke!

      Stefan

      1. Hi,

        perldoc Getopt::Std
        meine eigentliche Abfrage muss ich dann trotzdem noch mit einem if Abfragen, oder?

        ja, den grundlegenden Sprachaufbau kann Dir kein Modul abnehmen.

        Ferner lies bitte in perldoc perlstyle nach, wie Variablennamen gewählt werden sollten.
        ja, ich weis, mein Chef hat mir auch schon eins aufn Deckel gegeben, weil die Variablen unter aller Sau sind....*sorry*

        *g* Aus Fehlern wird man klug... ;-)

        die Idee mit der Funktion ist in der Tat nicht schlecht, wie immer kommt man selbst nicht auf die simpelsten Lösungen....*Asche auf mein Haupt!!*

        perldoc Betriebsblindheit :-)

        Cheatah

        --
        X-Will-Answer-Email: No
        1. Mahlzeit, i bins nochamal,

          meine eigentliche Abfrage muss ich dann trotzdem noch mit einem if Abfragen, oder?

          ja, den grundlegenden Sprachaufbau kann Dir kein Modul abnehmen.

          Schade *Schluchz*. Aber es hätt ja sein können das es genau dafür schon eine Funktion in Perl gibt...

          trotzdem Danke nochmal!

          schönen Tag noch

          Stefan

          ---
          Es gibt Tage da verliert man ... und es gibt Tage da gewinnen die Andern!