Gernot Gebhard: regexp & "Kommandozeilenparameter"

Hi,
ich bin gerade dabei ein Newsscript zu schreiben. Klappt soweit ganz gut. Ich würde nur ganz gerne noch folgende Option einbauen.
Und zwar falls z.B. :) oder :( usw... in den News vorkommen, dann würde ich gerne mittels einer regexp alle :) usw... durch z.b. <IMG SRC="bla/irgendwas.gif" ALT="jaja"> ersetzten.
Ich weiss das man sowas machen kann, nur versteh ich nich wie diese regexp funktionieren.
Kann mir jemand helfen?

Meine zweite Frage ist die folgende:
Wie bekomme ich die Information, dass name=test hereaus, wenn ich einen Perlskript z.B. so starte: <A HREF="/cgi-bin/test.pl?name=test">Test</A>. Gibt es eine Möglichkeit diese "Kommandozeilenparameter" auszulesen?
Weiss dazu jemand was? *liebguck* (Hab mir schon das Zeugs auf SELFHTML angeschaut, aber nix ordentlichs gefunden... leider :( ).

Danke schonma im Vorraus, CU gg

  1. hallo Gernot,

    ich schätze mal, das ist eine durchaus kontroverse Antwort,
    aber ich habe den Eindruck, Du solltest Dir erst einmal ein
    gutes Buch über Perl kaufen .. oder zumindest das, was in
    SelfHTML über Perl steht durchlesen, das ganze verstehen +
    lernen und *dann* dich ans programmieren machen.

    Ansonsten die Antworten auf Deine Fragen:
        perldoc perlre
        perldoc CGI

    Grüße
       K@rl

    1. Hi,

      ich schätze mal, das ist eine durchaus kontroverse Antwort,
      aber ich habe den Eindruck, Du solltest Dir erst einmal ein
      gutes Buch über Perl kaufen .. oder zumindest das, was in
      SelfHTML über Perl steht durchlesen, das ganze verstehen +
      lernen und *dann* dich ans programmieren machen.

      Den Hauptteil davon versteh ich ja... File-Handling, Daten aus Formularen entnehmen, usw... nur die regexp machen mir zu schaffen. Die Skripte die ich erzeuge werden eigentlich recht klein und elegant (für meine Begriffe *g*), aber ich denke, dass man da noch einiges kleiner machen kann...

      Ansonsten die Antworten auf Deine Fragen:
          perldoc perlre
          perldoc CGI

      Ich werd's mir zu Herzen nehmen, danke für die Hilfe...
      GN8, CU Gernot

      1. Hallo Gernot,

        wenn Du dich in das Thema einlesen willst:
        http://www.phy.uni-bayreuth.de/~btpa25/perl/perl_main.html
        ist ein imvho gutes, einführendes Perl-Tutorial, das auch im Kapitel "Suchen und Ersetzen" ausführlich auf Reguar Expressions eingeht.

        Grüße
           K@rl

  2. Hi auch,

    Ich weiss das man sowas machen kann, nur versteh ich
    nich wie diese regexp funktionieren.
    Kann mir jemand helfen?

    ich verstehe Dein Problem im Prinzip ganz gut, glaube ich. Mir ging es genauso, als ich angefangen habe, meine erste Sprache mit regular expressions zu lernen.

    Eine kurze Erklärung, wie regular expressions "funktionieren", traue ich mir aus dem Stand nicht zu.
    Die Dokumentation von Perl selbst ist da wesentlich gründlicher, auch wenn ich sie nicht für sonderlich didaktisch halte.

    Was ich versuchen kann, ist, Dir die Idee zu vermitteln, die meiner Meinung nach hinter regular expression (und allen "Viertgenerationssprachen", auch SQL!) steckt.

    Das, was Du bisher an Perl verwendet hast, hat von Dir verlangt, zu beschreiben, _wie_ Du ein Problem lösen willst. Du hast einen Algorithmus in Befehlen codiert, in Schleifen, Abfragen, Zuweisungen, Funktionsaufrufen. Du hast das Problem schritt für Schritt zerlegt.

    Genau das tun 4GL-Sprachen aber nicht. Dort beschreibst Du nicht mehr den Lösungsweg - Du beschreibst die Eigenschaften des Ergebnisses!
    Du sagst also nicht mehr "ich will jetzt diese Zeichenkette von vorne bis hinten verarbeiten", sondern "das Muster X soll gefälligst durch das Muster Y ersetzt werden". Und Perl findet selbständig heraus, wie es das am geschicktesten hin kriegt!

    Bei SQL ist es übrigens genauso. Auch dort sagst Du üblicherweise nicht, daß Du den 259. Datensatz haben willst, sondern alle Datensätze, die bestimmte Eigenschaften haben (SELECT <feldliste> FROM <table> WHERE <bedingung>). Wie das die Datenbank-Engine intern umsetzt, das kann Dir (zunächst einmal, modulo Performance) egal sein.

    Das Konzept ist eigentlich dafür gedacht, daß jemand in solchen Sprachen "programmieren" kann, der sich mit Algorithmen (einer m. E. relativ mathematischen Anschauungsweise von Abläufen) nicht zurecht finden würde.
    Es entspricht auch viel mehr der Idee, das man eigentlich zuerst eine Aufgabenstellung schreiben sollte, bevor man irgendwas programmiert. Und das 4GL-Programm ist gar nichts Wesentlich anderes aus eine syntaktische Umsetzung der Aufgabenstellung.

    Regular Expressions sind für jemanden, der aus der 3GL-Welt, also den Algorithmischen Sprachen kommt, eine ganz neue Erfahrung. Für jemanden, der Spezifikationen schreiben kann, sind sie eine tolle Sache.
    Ich selbst hatte das Glück, SQL zuerst zu lernen - als mir die Analogie klar war, hatte ich die Sache verstanden. Kryptisch sind regular expressions natürlich immer noch ... da kann man sehr leicht Fehler machen und ewig nicht finden, wenn man nicht sehr sorgfältig dokumentiert, was man eigentlich tun will.

    Viel Erfolg beim Einarbeiten
         Michael
    (oder auch: "Petri Heil" ... siehe den Troll-Thread weiter unten)

    1. Hi,

      Du sagst also nicht mehr "ich will jetzt diese Zeichenkette von vorne bis hinten verarbeiten", sondern "das Muster X soll gefälligst durch das Muster Y ersetzt werden". Und Perl findet selbständig heraus, wie es das am geschicktesten hin kriegt!

      [...]
      Regular Expressions sind für jemanden, der aus der 3GL-Welt, also den Algorithmischen Sprachen kommt, eine ganz neue Erfahrung. Für jemanden, der Spezifikationen schreiben kann, sind sie eine tolle Sache.

      Ahhh, verstehe... is ja echt genial, macht nämlich den Quellcode richtig klein... das einzige was ich mir jetzt noch aneignen muss ist die Syntax (k@rl hat mit ja geschrieben, wo ich das nachlesen kann).
      Übrigens hast du recht, für meine Suchalgorythmen hab ich mein Problem in Algorhytmen zerlegt (naja, ich bin seit 6 Jahren dabei auf diese Art zu programmiern). Diese Art der Programmierung war mir bisher fremd... :)

      Nun denn, dann mach ich mich mal ans Syntax-Verstehen *g*
      Danke für die Hilfe, CU gg

      1. Hi Gerhard,

        Danke für die Hilfe, CU gg

        danke auch für Deine Antwort.

        Sie zeigt mir nämlich, daß ich Dich richtig eingeschätzt habe.

        Viele Grüße
              Michael

  3. Hi,

    schau doch mal hier:

    http://www.tfh-berlin.de/~welker/Vorlesungen/Perl/06_Strings_pl.htm

    Das Skript ist recht gut und es gibt auch alle Beispiele als zip.

    viele Grüße
    Karsten

    1. Hi,

      Das Skript ist recht gut und es gibt auch alle Beispiele als zip.

      Danke, ich denk ich hab jetzt genug Material beisammen (Habs heut morgen auch endlich geschnallt wie die regexp funzen... richtig schön *g*)

      Danke an alle die mir geholfen haben!!!
      CU gg

      P.S.: @Michael Schröpl ich heiss doch nich Gerhard... ;) aber das macht nix...

      1. Hi,

        P.S.: @Michael Schröpl ich heiss doch nich Gerhard... ;)
        aber das macht nix...

        bitte vielmals um Entschuldigung - da habe ich wohl ein paar Wechstaben verbuchselt.
        (Ich sollte manchmal doch erst korrekturlesen - in diesem winzigkleinen Fensterlein, gnlpfts - und dann "absenden" ...)

        Reuige Grüße
               Michael