Benutzerdefinierte Suche

Perl - mehrere substitutes

  1. apx2001

    apx2001 Thread StarterMacUser Mitglied

    Mitglied seit:
    03.12.2006
    Beiträge:
    4
    Zustimmungen:
    0
    Hi,

    folgendes Problem: ich moechte in einem textfile das Datumsformat auf numerische Schreibweise (30.04.2006) vereinheitlichen (manche Eintraege sind 30-Apr-2006) und habe folgenden Code geschrieben:

    @data = <FILEHANDLE>;

    foreach $word (@data)
    {
    if ($word =~ "-Jul-") {
    $word =~ s/$word/.07./;}
    elsif ($word =~ "-Jun-") {
    $word =~ s/$word/.06./;}
    elsif ($word =~ "-May-") {
    $word =~ s/$word/.05./;}
    else {if ($word =~ "-Apr-") {
    $word =~ s/$word/.04./;}
    }
    print $word;
    }

    Das ganze funktioniert, solange ich nur einen Eintrag veraendere, sonst gibt es eine Fehlermeldung.

    Any suggestions, please?
     
    apx2001, 03.12.2006
  2. Amnion

    AmnionMacUser Mitglied

    Mitglied seit:
    25.10.2005
    Beiträge:
    410
    Zustimmungen:
    26
    Du änderst ja auch nur Word nicht das Element des Arrays. Glaube einfacher ist es, wenn Du mit nem Editor Suchen und Ersetzen machst.

    Ansonsten mit Perl, würde ich Zeile für Zeile lesen und dann mit dem modifier g für global alle vorkommen in einer Zeile ersetzten.

    Gibnt 1000 weitere Möglichkeiten...
     
    Amnion, 03.12.2006
  3. mr660

    mr660MacUser Mitglied

    Mitglied seit:
    28.08.2006
    Beiträge:
    294
    Zustimmungen:
    22
    meine quick&dirty loesungen fuer solche faelle

    Code:
    $shortMonth = "Jan|Feb|Mar|Apr|Mai|Jun|Jul|Aug|Sep|Okt|Nov|Dez";
    %numMonth = ("Jan" => "01", "Feb" => "02" ....); # entsprechend auffuellen
    
    while (<>) {
       s!\-($shortMonth)\-!.$numMonth($1).!gi;
       print
    }
    
    du kannst dir das mit if ... und s/// sparen, denn ein s/foo/baar/ tut nix, wenn kein "foo" im text vorkommt, dh. das orginal wird nicht geaendert.

    in dem beispiel wird mit der spezial-variablen "$_" gearbeitet...
     
    mr660, 04.12.2006
  4. apx2001

    apx2001 Thread StarterMacUser Mitglied

    Mitglied seit:
    03.12.2006
    Beiträge:
    4
    Zustimmungen:
    0
    Herzlichen Dank...

    ...fuer Eure Hilfe - hat mir sehr geholfen!!!!
     
    apx2001, 05.12.2006
Die Seite wird geladen...