#!/usr/bin/perl -w # file KLEIDER/web/src/sitestyle/clean_config.pl # Entfernt Leerzeilen und Kommentarzeilen aus Konfigurationsdateien # 2014-08-27 Herbert Schiemann use utf8; # Dieser Quelltext ist utf-8-kodiert use Herbaer::Readargs; # read_args () binmode (STDIN, ":encoding(utf-8)"); binmode (STDOUT, ":encoding(utf-8)"); binmode (STDERR, ":encoding(utf-8)"); my $args = { "[cnt]verbose" => undef, "in" => undef, # Eingabedatei, default STDIN "out" => undef, # Ausgabedatei, default STDOUT "encoding_in" => "utf-8", # Kodierung der Eingabe "encoding_out" => "utf-8", # Kodierung der Ausgabe }; # gibt die Version nach STDOUT aus sub version { print << 'VERSION'; clean_config.pl Entfernt Leerzeilen und Kommentarzeilen aus Konfigurationsdateien Version 2014-08-27 2014 Herbert Schiemann GPL 2 oder neuer VERSION }; $args -> {"[sr]version"} = sub { version (); exit 0; }; $args -> {"[sr]help"} = sub { version (); print_message_with_values (<<"HELP", $args); $0 --help zeigt diese Hilfe an $0 --version zeigt die Programm-Version an $0 [option]... --verbose erhöht den Umfang der STDERR-Ausgabe \${[cnt]verbose} --no_verbose unterdrückt die STDERR-Ausgabe --in Dateipfad der Eingabedatei \${in} --out Dateipfad der Ausgabe-Datei \${out} --encoding_in Kodierung der Eingabe \${encoding_in} --encoding_out Kodierung der Eingabe \${encoding_out} HELP exit 0; }; # help read_args ($args); my $hin; # Handle der Eingabe my $hout; # Handle der Ausgabe my $nc_hin; # ist $hin zu schließen? my $nc_hout; # ist $hout zu schließen? open_files($args) or die; clean_config ($args, $hin, $hout); close_files($args); sub open_files { my $args = shift; my $verb = $args -> {"[cnt]verbose"}; my $fnin = $args -> {"in"} || "-"; my $fnout = $args -> {"out"} || "-"; print STDERR "clean_js $fnin -> $fnout\n" if $verb; my $enc = $args -> {"encoding_in"}; if ($fnin eq "-") { $hin = STDIN; binmode ($hin, ":raw:encoding($enc)"); } else { open ($hin, "<:encoding($enc)", $fnin) or do { print STDERR "Kann Eingabedatei \"$fnin\" nicht öffnen: $!\n" if $verb; return 0; }; $nc_hin = 1; } $enc = $args -> {"encoding_out"}; if ($fnout eq "-") { $hout = STDOUT; binmode ($hout, ":raw:encoding($enc)"); } else { open ($hout, ">:encoding($enc)", $fnout) or do { print STDERR "Kann Ausgabedatei \"$fnout\" nicht öffnen: $!\n" if $verb; return 0; }; $nc_hout = 1; } 1; } # open_files sub close_files { close ($hin) if $nc_hin; close ($hout) if $nc_hout; } # close_files # entfernt Leerzeilen, Kommentarzeilen und Leerzeichen am Ende einer Zeile, # ersetzt aufeinander folgende Leerzeichen durch ein einzelnes Leerzeichen # $args HASH der Befehlszeilen-Argumente # $hin Handle der Eingabe # $hout Handle der Ausgabe sub clean_config { my ($args, $hin, $hout) = @_; my $line; # Zeile while (defined ($line = <$hin>)) { next if $line =~ /^\s*$/ ; next if $line =~ /^\s*#/ ; $line =~ s/\s*$//; $line =~ s/\s+/ /g; print $hout "$line\n"; } } # clean_config # end of file KLEIDER/web/src/sitestyle/clean_config.pl