[Trennmuster] Änderungen in 2 Perl-Skripten

Norman norman at optimalbliss.de
Di Jun 3 19:50:50 CEST 2014


Hallo,

ich bin mir nicht zu 100% sicher, ob ich mit der Mail an diese Stelle
die richtige Wahl getroffen habe, um den Code ins aktuelle git-repo
einpflegen zu lassen, denn ich finde die Informationen dazu irgendwie
nicht so richtig.

Ich habe aber an 2 Skripten etwas geändert, dass bei zigfachen Ausführen
eventuell bezahlt machen kann (siehe Dateianhang).

In der apply-pattern.pl habe ich nur die before_exit()-Funktion in einen
END-Block gepackt. END-Blöcke werden immer ausgeführt, nachdem das
Skript lief, (fast) egal, mit welchem Signal es getötet wird (sie werden
sogar ausgeführt, wenn das Skript selbst nicht hat laufen können, z.B.
wegen Syntaxfehlern). Das wäre hier -- denke ich -- die bessere Option.

In der extract-tex.pl habe ich den chop-Befehl verschoben, damit er
nicht nutzlos ausgeführt wird. Wenn /^#/ auf $_ matchen sollte, wäre das
nämlich der Fall.
Dann habe ich noch einige ifs umgebaut, damit keine mehrfachen
Überprüfungen stattfinden. Ich habe (ich hoffe es!) die Logik nicht
verändert, aber ich bitte umbedingt noch um einen Check, ob das wirklich
so ist.

Viele Grüße,

Norman
-------------- nächster Teil --------------
diff --git a/skripte/apply-pattern.pl b/skripte/apply-pattern.pl
index b1e9f8c..5e65d32 100644
--- a/skripte/apply-pattern.pl
+++ b/skripte/apply-pattern.pl
@@ -43,12 +43,6 @@ if ($#ARGV != 1) {
       "  vor dem letzten Buchstaben in der Ausgabe.\n";
 }
 
-sub before_exit {
-  chdir($ENV{HOME}) || chdir('/');
-}
-
-$SIG{__DIE__} = 'before_exit';
-
 my $trennmuster = File::Spec->rel2abs($ARGV[0]);
 my $translation = File::Spec->rel2abs($ARGV[1]);
 my $tempdir = File::Temp::tempdir(CLEANUP => 1);
@@ -130,6 +124,8 @@ while (@eingabe) {
   print @ergebnis;
 }
 
-before_exit();
+END {
+  chdir($ENV{HOME}) || chdir('/');
+}
 
 # eof
diff --git a/skripte/extract-tex.pl b/skripte/extract-tex.pl
index 9f93cd9..399ad8c 100644
--- a/skripte/extract-tex.pl
+++ b/skripte/extract-tex.pl
@@ -89,8 +89,8 @@ sub entferne_marker {
 
 
 while (<>) {
-  chop;
   next if /^#/;
+  chop;
 
   # Entferne Kommentare.
   s/#.*$//;
@@ -107,18 +107,20 @@ while (<>) {
   #
   # Beachte: Feld n hat Index n-1.
   my $zeile = $feld[1];
-  $zeile = $feld[2] if defined $feld[2]
-                       && $feld[2] ne "-3-" && ($opt_t || $opt_s);
-  $zeile = $feld[3] if defined $feld[3]
-                       && $feld[3] ne "-4-" && !($opt_t || $opt_s);
-  $zeile = $feld[4] if defined $feld[4]
-                       && $feld[4] ne "-5-" && !$opt_v;
-  $zeile = $feld[5] if defined $feld[5]
-                       && $feld[5] ne "-6-" && ($opt_t || $opt_s) && !$opt_v;
-  $zeile = $feld[6] if defined $feld[6]
-                       && $feld[6] ne "-7-" && !($opt_t || $opt_s) && !$opt_v;
-  $zeile = $feld[7] if defined $feld[7]
-                       && $feld[7] ne "-8-" && $opt_s && !$opt_v;
+  if($opt_t || $opt_s) {
+	  $zeile = $feld[2] if defined $feld[2] && $feld[2] ne "-3-";
+  } else {
+	  $zeile = $feld[3] if defined $feld[3] && $feld[3] ne "-4-";
+  }
+  if(!$opt_v) {
+	  $zeile = $feld[4] if defined $feld[4] && $feld[4] ne "-5-";
+	  if($opt_t || $opt_s) {
+		  $zeile = $feld[5] if defined $feld[5] && $feld[5] ne "-6-";
+	  } else {
+		  $zeile = $feld[6] if defined $feld[6] && $feld[6] ne "-7-";
+	  }
+	  $zeile = $feld[7] if defined $feld[7] && $feld[7] ne "-8-" && $opt_s;
+  }
 
   next if $zeile eq "-2-";
 
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 880 bytes
Beschreibung: OpenPGP digital signature
URL         : <https://listi.jpberlin.de/pipermail/trennmuster/attachments/20140603/4a301911/attachment.asc>


Mehr Informationen über die Mailingliste Trennmuster