Perl - mehrere substitutes

apx2001

Registriert
Thread Starter
Dabei seit
03.12.2006
Beiträge
4
Reaktionspunkte
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?
 
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...
 
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...
 
Herzlichen Dank...

...fuer Eure Hilfe - hat mir sehr geholfen!!!!
 
Zurück
Oben Unten