Sandra: sub direkt anwählen

Hallo
Kann mir jemand bei diesem Problem helfen?
Ich möchte gerne wissen wie ich mit dem ausführen eines Perlscriptes direkt eine sub starten kann Beispiel:
Ich rufe das Script so auf test.pl?1 dann soll im script die sub 1 ausgegeben werden.
So soll es von sub 1 bis sub 9 gehen.
Ist so was möglich kann mir jemand sagen wie dass geht (beispiel).
MfG
Sandra

  1. Hi,

    Hallo
    Kann mir jemand bei diesem Problem helfen?
    Ich möchte gerne wissen wie ich mit dem ausführen eines Perlscriptes direkt eine sub starten kann Beispiel:
    Ich rufe das Script so auf test.pl?1 dann soll im script die sub 1 ausgegeben werden.
    So soll es von sub 1 bis sub 9 gehen.
    Ist so was möglich kann mir jemand sagen wie dass geht (beispiel).
    MfG
    Sandra

    So sollte es gehen:

    $weiter=$ENV{'QUERY_STRING'};
    &$weiter;

    Gruss
    Frédéric

    1. Hallo
      Danke,Frédéric!
      Aber ein Problem habe ich immer noch wie kann ich ein default definieren.
      Also zumbeispiel wenn man es nur mit test.pl aufruft?
      Weil so gibt ein 500er.
      Wenn ich es aber so aufrufe test.pl?an gibt er den Inhalt der sub an aus .
      Hoffentlich versteht ihr was ich meine :).
      Cu
      Sandra

      1. re hi,

        Hoffentlich versteht ihr was ich meine :).

        Ja ich denke schon.

        Aber ein Problem habe ich immer noch wie kann ich ein default definieren.

        Ganz einfach. Wenn kein Fragezeichen vorhanden ist, dann ist $ENV{'QUERY_STRING'} nicht definiert. So ist auch $weiter nicht definiert.

        Also:

        unless ($weiter){
           &was_auch_immer_du_willst;
        }

        oder kurz:
        &was_auch_immer_du_willst unless $weiter;

        Gruss,
        Frédéric

        1. Hin

          Du weißt aber das das ganze eine massive Sicherheitslücke sein kann? Dadurch kann er irgendwelche in deinem Script vorhandenen Subroutinen aufrufen was besonders wenn mann einige Module eingebunden hat sehr gefährlich sein kann.
          Ich würde es eher so machen:

          use strict;
          use CGI; #oder ein selbstgeschriebene Variante
          my $cgi = new CGI;
          my $aufruhfparam = $cgi->param("sub");# dadurch kannst du noch andere Parameter übergeben
          if ($aufruhfparam == "test1" )
          {
          &test1;
          }
          elsif ($aufruhfparam == "test2" )
          {
          &test2;
          }
          else
          {
          &default;
          }

          Wenn du es so machst muss die Url halt in der Form http://www.deineseite.tld/script.pl?sub=irgendwas/ sein.
          Das hat den vorteil das nur von dir vorhergesehene Subs benutzt werden können.
          Ist jetzt nicht getested, also können  ein paar Tippfehler drin sein.

          mfg
          Andres Freund