umlaute2html.pl - ersetzt Umlaute und Sonderzeichen in HTML-Dateien
umlaute2html.pl [-e Dateiendung] [-c] [-b Dateiendung] [-s] [-h]
Datei(en)/Verzeichnis(se)
umlaute2html.pl ersetzt Umlaute und und Sonderzeichen in HTML-Dateien durch HTML-konforme Ausdrücke. Werden Verzeichnisse als Parameter übergeben, erfolgt eine rekursive Abarbeitung dieser.
Mit den Schalter -e kann die Ändung der Quelldateien als regulärer Ausdruck,
z.B. \.html?$ für .html und .htm, spezifiziert werden.
-c erzeugt Sicherheitskopien der geänderten Dateien. -b
ermöglicht dabei von .bak abweichende Dateiendungen.
-s unterdrückt die Ausgabe von Statusmeldungen.
-h gibt einen kurzen Hilfetext aus.
$Log: umlaute2html.pl.html,v $
Revision 1.1 2005-01-23 14:04:20 carsten
- aus dem Quellcode automatisch mit perltidy erzeugte Dokumentationen
- ursprünglicher Speicherort: /
Revision 1.1 2004/06/27 18:10:35 carsten
- ausführliche Dokumentation für umlaute2html.pl hinzugefügt
Revision 1.2 2004/06/27 17:51:24 carsten - Version 2.1 - manpage hinzugefügt - Quelltext mit perltidy formatiert
umlaute2html.pl v2.1
von Carsten Grohmann mail_an_carstengrohmann.de
Erstellungsdatum: 27. Juni 2004
$Id: umlaute2html.pl.html,v 1.1 2005-01-23 14:04:20 carsten Exp $
Copyright (c) 2003-2004 Carsten Grohmann
Dieses Softwarepaket enthält freie Software. Sie kann entsprechend den Bedingungen der GNU General Public License Version 2 oder höher, veröffentlicht durch die Free Software Foundation, vertrieben und/oder modifiziert werden.
Details dazu befinden sich unter http://www.fsf.org/licenses/licenses.html.
#!/usr/bin/perl # # umlaute2html - ersetzt Umlaute und Sonderzeichen durch HTML-konforme # Ausdrücke in alllen übergebenen Dateien und Verzeichnissen # # Version: 2.1 # # Lizenz: GPL # # Autor: Carsten Grohmann # # Aufruf des Programmes: # perl umlaute2html.pl [Optionen] [Dateien|Verzeichnis(se)] # oder ./umlaute2html.pl [Optionen] [Dateien|Verzeichnis(se)] use strict; use File::Find; use Getopt::Std; # Programmversion my $version = "2.1"; # Originale Dateien sichern my $safe_old_files = "no"; # Endung für Sicherheitskopien my $backup_extention = ".bak"; # Endung der zu bearbeitenden Dateien my $file_extention = '\.html?$'; # Array mit allen zu ändernden Dateien my @htmlfiles; # Erweiterte Ausgaben anzeigen my $silent = "no"; # Hash für Programmargumente my %opts; # Hash für Ersetzungen my %replace = ( 'ä' => 'ä', 'ö' => 'ö', 'ü' => 'ü', 'Ä' => 'Ä', 'Ö' => 'Ö', 'Ü' => 'Ü', 'ß' => 'ß', '§' => '§', '¹' => '¹', '²' => '²', '³' => '³', '¤' => '€', '¢' => '¢', '\(c\)' => '©', '\(C\)' => '©', '\(r\)' => '®', '\(R\)' => '®', '\(tm\)' => '™', '\(TM\)' => '™', '¶' => '¶', '°' => '°', '[\t ]+$' => '' # Leerzeichen und Tabs am Zeilenende entfernen ); sub output { print @_ if ( $silent eq "no" ); } sub usage { print( "usage $0 [-e Dateiendung] [-c] [-b Dateiendung] [-h] [-s]\n" . " -e Endung Endung der zu bearbeitenden Dateien als regulärer " . "Ausdruck\n" . " zum Beispiel $file_extention für \".html\" und " . "\".htm\"\n" . " -c Sicherheitskopie erstellen\n" . " -b Endung Endung der Sicherheitskopie\n" . " -s Keine detailierten Ausgaben\n" . " -h diesen Text anzeigen\n" . "Zusätzlich enthält dieses Skript eine integrierte Dokumentation.\n" . "Sie kann mit pod2(html|man|latex|text) angezeigt werden.\n" . "Beispiel: \"pod2man getweblogfiles.pl | man -l -\" " . "zeigt die Dokumentation\n" . "als man page formatiert an.\n" ); exit $_; } # ersetzt alle in %replace gefundenen Ausdrücke in der übergebenen Datei sub fine_html { # Dateiname my $file = @_[0]; # Flag für Änderungen des Inhalts my $changed = 0; # Inhalt der Datei my @content; output("Verarbeite $file "); # Datei einlesen open( FH, "<$file" ) || die "open to read $file failed"; @content = <FH>; close(FH); # Inhalt bearbeiten foreach my $key ( keys %replace ) { if ( grep( /$key/, @content ) ) { s/$key/$replace{$key}/g for @content; $changed = 1; } } # Datei geändert? if ( $changed == 1 ) { output(" Schreibe Änderungen "); rename( $file, $file . $backup_extention ) if ( $safe_old_files eq "yes" ); open( FH, ">$file" ) || die "open to write $file failed"; print FH @content; close(FH); } output("ok\n"); } sub find_html { my $file = $_; # zurück wenn keine .html-Datei return unless ( -f $_ ) && ( $file =~ /$file_extention/ ); push( @htmlfiles, $File::Find::name ); } # Programmnamen und Version ausgeben print("umlaute2html.pl Version $version (c) 2003-2004 Carsten Grohmann\n"); # Keine Argumente? -> nutze aktuelles Verzeichnis @ARGV = ('.') unless @ARGV; # Argumente verarbeiten getopts( 'e:cb:sh', \%opts ) || usage(1); # Hilfe ausgeben usage(0) if ( $opts{'h'} ); # Dateiendung setzen $file_extention = $opts{'e'} if ( $opts{'e'} ); # Sicherheitskopieen erstellen $safe_old_files = "yes" if ( $opts{'c'} ); # Dateiendung der Sicherheitskopien setzen $backup_extention = $opts{'b'} if ( $opts{'b'} ); # Erweiterte Ausgaben unterdrücken $silent = "yes" if ( $opts{'s'} ); # Dateien suchen find( \&find_html, @ARGV ); # gefundene Dateien bearbeiten foreach (@htmlfiles) { fine_html($_) }; # Skript beenden exit; #----------------------------------------------------------------------- # END OF SCRIPT #----------------------------------------------------------------------- __END__