Jemand zu Hause?
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#!/usr/bin/env perl -w $pfad="./ligen"; @fileliste = glob("$pfad/*.txt"); foreach $filename (@fileliste) { print $filename; }
File::Slurp, damit kannst einfach Inhalt aus einer Datei ziehen machst deine regex auf den Inhalt mit mit ebenso einfachen Befehl packst den Inhalt wieder in die Datei. darum gehts doch oder?
Tie::File wohl noch bequemer zu nutzen als
File::Slurp, auch wenn es vermutlich nicht sehr performant ist.1 2 3 4 5 6 7 8 9 10
my @filesliste = glob('./ligen/*.txt'); foreach my $filename(@filesliste) { open(FH,"<$filename") { while (<FH>) { $line =~ s/(\w+)liga(.+)/<table id="tabelle"><p class="P_liga">$1liga$2<\/p>/g; $line =~ s/^(\w.+)/<tr><td class="mannschaft">$1<\/td><td class="tore1">:<\/td><\/tr>/g; } } close(FH); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
#!/usr/bin/perl use strict; use warnings; # verzeichnis in dem gearbeitet werden soll my $base_dir='./ligen/*.txt'; # alle Dateien im Verzeichnis durchgehen # öffnen und einlesen # Inhalt ändern und in temporäre Datei speichern # Original löschen und durch die temporäre Datei ersetzen for my $filename (glob($base_dir)) { if(open(my $in_fh, '<', $filename)) { # erzeuge Temporären Dateinamen my $temp_filename=$filename; my $cnt=0; while(-f $temp_filename) { $temp_filename=$filename.'.'.$cnt.'.tmp'; $cnt++; } # öffne temporäre Datei zum schreiben if(open(my $out_fh,'>',$temp_filename)) { # Zeile in "$line" einlesen while (my $line=<$in_fh>) { # Inhalt von "$line" ändern $line =~ s/(\w+)liga(.+)/<table id="tabelle"><p class="P_liga">$1liga$2<\/p>/g; $line =~ s/^(\w.+)/<tr><td class="mannschaft">$1<\/td><td class="tore1">:<\/td><\/tr>/g; # alles in Temoräre Datei schreiben print $out_fh $line; } close($out_fh); } else { warn "ERROR: open $temp_filename ($!)\n"; } close($in_fh); # Wenn temporäre Datei vorhanden # dann original löschen # und temporäre Datei umbenennen if(-f $temp_filename) { if(unlink($filename)) { unless(rename($temp_filename,$filename)) { warn("ERROR rename $temp_filename to $filename ($!)\n"); } } else { warn("ERROR delete $filename ($!)\n"); } } } else { warn "ERROR: open $filename ($!)\n"; } }
Tie::File1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
#!/usr/bin/perl use strict; use warnings; use Tie::File; # verzeichnis in dem gearbeitet werden soll my $base_dir='./ligen/*.txt'; # alle Dateien im Verzeichnis durchgehen for my $filename (glob($base_dir)) { # Tie bindet Funktionalitäten an eine Variable # in diesem Fall wird das lesen/schreiben einer Datei # auf das ändern eines Arrays abgebildet my @file_array; if( tie(@file_array, 'Tie::File', filename) ) { for my $line (@file_array) { # Inhalt von "$line" ändern $line =~ s/(\w+)liga(.+)/<table id="tabelle"><p class="P_liga">$1liga$2<\/p>/g; $line =~ s/^(\w.+)/<tr><td class="mannschaft">$1<\/td><td class="tore1">:<\/td><\/tr>/g; } } else { warn("ERROR TIE filename ($!)\n"); } }
Wie installiert man ein Modul?