Perl - mehrere substitutes

Dieses Thema im Forum "Mac OS X Entwickler, Programmierer" wurde erstellt von apx2001, 03.12.2006.

  1. apx2001

    apx2001 Thread Starter MacUser Mitglied

    Beiträge:
    4
    Zustimmungen:
    0
    MacUser seit:
    03.12.2006
    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?
     
  2. Amnion

    Amnion MacUser Mitglied

    Beiträge:
    410
    Zustimmungen:
    26
    MacUser seit:
    25.10.2005
    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...
     
  3. mr660

    mr660 MacUser Mitglied

    Beiträge:
    294
    Zustimmungen:
    22
    MacUser seit:
    28.08.2006
    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...
     
  4. apx2001

    apx2001 Thread Starter MacUser Mitglied

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

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