#!/usr/bin/perl -w # file KLEIDER/web/src/localization/replace.pl # Platzhalter in einer Datei ersetzen # 2016-07-18 Herbert Schiemann # GPL Version 2 oder neuer # 2020-05-25 --docroot, --var package main; use utf8 ; use Cwd qw(realpath); use Encode; use Herbaer::Readargs ; use Herbaer::Replace ; binmode (STDIN, ":utf8") ; binmode (STDOUT, ":utf8") ; binmode (STDERR, ":utf8") ; my $s = realpath($0); $s =~ s/\/src\/localization\/replace\.pl.*/\/docroot/; # Hash der Kommandozeilen-Argumente my $args = { "[cnt]verbose" => 0, "val" => "secrets", # Werte-Datei "docroot" => $s, "var" => [], }; # gibt die Version nach STDOUT aus sub version { print <<'VERSION' ; replace.pl Platzhalter in einer Datei ersetzen 2020-05-25 Herbert Schiemann VERSION } $args -> {"[sr]version"} = sub { version (); exit 0; }; $args -> {"[sr]help"} = sub { version (); print_message_with_values (<<'HELP', $args); replace.pl [Optionen] --[no_]verbose Umfang der Meldungen ${[cnt]verbose} --val VAL Pfad der Datei mit den Werten ${val} --var VAR .. Variante ${var} HELP exit 0; }; read_args ($args); my $verbose = $args -> {"[cnt]verbose"}; my $vals = { "docroot" => $args -> {"docroot"}, }; my $h; my $line; if (!open ($h, "<:encoding(utf-8)", $args -> {"val"} )) { print STDERR "Kann Datei \"", $args -> {"val"}, "\" nicht lesen: $!\n" if $verbose; } else { while (defined ($line = <$h>)) { print STDERR $line if $verbose; $line =~ s/^\s+//; $line =~ s/\s+$//; if ( $line =~ /\s*([a-zA-Z0-9_.-]+)\s*=\s*(.+)/ ) { $vals -> {$1} = $2; } } close $h; } print STDERR "Werte gelesen\n" if $verbose;; if (@{$args -> {"var"}}) { my $r = join ("|", map {quotemeta decode ("utf-8", $_)} @{$args -> {"var"}}); $r = qr/^(.+)\.$r$/; print STDERR "VAR_REGEX $r\n" if $verbose; for $h (keys %$vals) { $vals -> {$1} = $vals -> {$h} if $h =~ $r; } } $line = undef; while (defined ($line = )) { print replace($line, $vals); } # end of file KLEIDER/web/src/localization/replace.pl