Didi: Durchsuchen von Dateien

Juten Tach

Wie jet dat euch so?

Ick hab da ma son klenes Problem und zwar:

Ich habe eine Suchfunktion programmiert, die soweit ja auch funktioniert. Ich habe das so gemacht, das er jeweils eine Zeile, einer Datei, durchsucht. Das Problem ist nur, das immer nur am Anfang einer Zeile gesucht wird, also wenn das Suchwort in der Mitte der Zeile steht, wird es nicht gefunden.

###########################################
Ich hab den Quelltext so geschrieben:

if ($zeile=~ /^$in{suchwort}/)
{
 print "Suchwort ist vorhanden";
}
###########################################

Vielleicht kann man das noch anders schreiben.

MFG
Didi

  1. Hi,

    Wie jet dat euch so?

    Flugzeug? Bahnhof?

    Das Problem ist nur, das immer nur am Anfang einer Zeile gesucht wird,

    Ja, genau das hast Du auch gesagt.

    if ($zeile=~ /^$in{suchwort}/)

    Siehe

    perldoc perlre

    Das Zeichen "^" steht für den Stringanfang.

    Übrigens: Dein Problem ist absolut unabhängig davon, ob es im CGI-Kontext auftritt oder nicht. Der richtige Themenbereich ist "PERL" - sofern dies die Sprache ist, die Du verwendest, was ich nur geraten habe.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. if ($zeile=~ /^$in{suchwort}/)

      das mit dem "^" wegnehmen, geht nicht. sucht immer noch nur am Anfang

      Sorry, ich Programmiere in Perl.

      MFG
      Didi

      1. Hi,

        if ($zeile=~ /^$in{suchwort}/)

        das mit dem "^" wegnehmen, geht nicht.

        doch, das geht. Warum sollte es nicht gehen?

        sucht immer noch nur am Anfang

        Ja, weil das "^" dies gebietet.

        Sorry, ich Programmiere in Perl.

        Beim nächsten Mal wähle bitte den Themenbereich entsprechend dem Problem.

        Cheatah

        --
        X-Will-Answer-Email: No
        1. Hab den Fehler gefunden, das Suchwort wird eingeteilt in groß und kleinschreibung unterteil und da wird, wenn ich was klein schreibe nicht gefunde.

          Kann man irgendwie sagen, dass das Programm groß und kleinschreibung ignorieren kann? Ich hab das versucht mit:
             @lines=~ s/([A-Z])/\L$1\E/g;

          Aber da schimpft der.

          MFG
          Didi

          1. Hi,

            Kann man irgendwie sagen, dass das Programm groß und kleinschreibung ignorieren kann?

            lies dazu bitte

            perldoc perlre

            Dort wird diese neben vielen anderen Fragen ebenfalls geklärt.

            Aber da schimpft der.

            Das ist keine Fehlerbeschreibung.

            Cheatah

            --
            X-Will-Answer-Email: No
            1. Aber da schimpft der.

              Das ist keine Fehlerbeschreibung.

              Warum bist du so unfreundlich?
              Ich mache sowas noch nicht sehr lange und wenn ich z.B. die Fehlermeldung nicht richtig erkläre ist das doch nicht so schlimm oder?
              Aber der sinn ist doch erkannt worden

              MFG
              Didi

              1. Hi,

                Aber da schimpft der.
                Das ist keine Fehlerbeschreibung.
                Warum bist du so unfreundlich?

                bin ich nicht.

                Ich mache sowas noch nicht sehr lange und wenn ich z.B. die Fehlermeldung nicht richtig erkläre ist das doch nicht so schlimm oder?

                Es ist höchstens schlimm für Dich, weil Dir ohne Fehlerbeschreibung (nicht einfach nur die Meldung - siehe bitte Archiv) niemand helfen kann.

                Aber der sinn ist doch erkannt worden

                Nein - ich habe keinen Schimmer, warum der Perl-Interpreter bei Deinem Code "schimpfen" sollte. Wo Du unabhängig davon die Lösung Deines Problems findest, habe ich Dir aber gesagt.

                Cheatah

                --
                X-Will-Answer-Email: No
              2. Aber da schimpft der.

                Das ist keine Fehlerbeschreibung.

                Warum bist du so unfreundlich?
                Ich mache sowas noch nicht sehr lange und wenn ich z.B. die Fehlermeldung nicht richtig erkläre ist das doch nicht so schlimm oder?

                Was bitte ist an "Das ist keine Fehlerbeschreibung." unfreundlich?
                Das ist eine ganz einfache Feststellung. Du erhälst offensichtlich eine Fehlermeldung, willst sie uns aber nicht sagen, willst aber trotzdem geholfen bekommen, _das_ nenne ich unfreundlich, weil alle dann nur rumraten können und ihre Zeit damit verschwenden _deinem_ Problem auf den Grund zu gehen.

                Struppi.

              3. Moin!

                Aber da schimpft der.

                Das ist keine Fehlerbeschreibung.

                Warum bist du so unfreundlich?
                Ich mache sowas noch nicht sehr lange und wenn ich z.B. die Fehlermeldung nicht richtig erkläre ist das doch nicht so schlimm oder?

                Wenn du eine Fehlermeldung erhälst, dann enthält diese exakte Informationen darüber, _was_falsch_ist_. Ein Experte (und hier im Forum sind viele Experten) kann anhand dieser Fehlermeldung schnell erkennen, wo das Problem liegt.

                Deshalb:

                Nicht rumlabern und schön umschreiben, dass da eine Fehlermeldung kommt ("Aber da schimpft der."), sondern einfach die Fehlermeldung kopieren und in den Posting einfügen (etwa so: "Ich erhalte folgende Fehlermeldung: Error in line 12345 in file /whatever: Regular expression could not be moved".)

                Aber der sinn ist doch erkannt worden

                Wenn du die Fehlermeldung in deinen eigenen Worten wiedergibst, wird ihr Sinn verfälscht. Du weißt noch nicht, was daran wichtig ist und läßt die interessanten Details weg - oder auch den ganzen Meldungsinhalt, und die Experten müssen sich dann denken, was du wohl gemeint haben könntest. Ein direktes Zitat der Fehlermeldung hingegen schaltet _dich_ als Fehlerquelle beim Übermitteln der Fehlermeldung aus - du kannst dann nichts mehr verfälschen, und man muß nicht mehr raten, was gemeint sein könnte.

                Natürlich gibts ein paar typische Fehler, die in gewissen Programmiersituationen immer wieder gern gemacht werden. Aber es hilft dir ja nichts, wenn du solch einen typischen Fehler nicht gemacht hast, obwohl alles darauf hindeutet.

                - Sven Rautenberg

                --
                Diese Signatur gilt nur am Freitag.
      2. Nochmals moin, moin!

        Dein Problem muß woanders liegen, denn diese Zeilen
          $zeile="Gramusel Nixda Addifikation";
          if ($zeile=~ /^Nixda/) { print "Vorhanden"; }
        finden den gesuchten Begriff nicht, da er nicht am Anfang der Zeile ist. Wird das "^" entfernt, klappt es, wie zu erwarten ist.

        Norbert

  2. Moin, moin!

    Ist das Problem eventuell behoben, wenn Du das "^" wegläßt?

    Norbert