linux-l: Perlscript

Manuel Tennert webmaster at german-sound.de
Mi Mär 21 13:13:21 CET 2001


Hi Ralf,

leider wird das nicht funktionieren, da die Seitenzahlen nicht immer hinter
einem <rf stehen....ich hab da echt verschiedene Texte, eine Regelmaessigkeit
ist da nicht vorhanden....
Aber ich glaube ich hab das Problem gefunden:
die Input-Datei hat keine Linebreaks, so steht der gesamte Inhalt in einer
Zeile und damit kann das Programm ja nicht Zeile fer Zeile abarbeiten. Ich muss
mir daher etwas einfallen lassen wie ich Linebreaks erzeuge---

aber danke trotzdem fuer die Hilfe !

Manuel

> #!/usr/bin/perl
> #
> # Dieses Script fuegt an aufeinanderfolgenden Seiten das "f" bzw. das
> "ff" an.
> #
> # DATE CREATED     : 11.04.00
> # DATE LAST UPDATE : 11.04.00
> while (my $zeile = <>) {
> 	my @a;
> 	
> 	#	Das Script setzt voraus, dass alle Seitenzahlen hinter einem
> 	#	"<rf" stehen und mit "©<" enden.
> 
> 	@a = split /<rf/, $zeile;
> 	my $zeilen_anfang = $a[0] . '<rf';
> 
> 	@a = split /©</, $a[1];
> 	my $seiten_zahlen = $a[0];
> 
> 	@a = split /©</, $zeile;
> 	my $zeilen_ende = '©<' . $a[1];
> 
>     if ($seiten_zahlen =~ /(.*?)([0-9].*[0-9])/ ) {
> 		print $zeilen_anfang;
> 
>  @seiten = split /, /, $seiten_zahlen;
>  $letzte_seite = $seiten[0];
>  $string = $letzte_seite;
>  for ($i = 1; $i <= $#seiten; ++$i) {
>      $seite = $seiten[$i];
>      if ($seite == $letzte_seite + 1) {
>   		$string .= "f";
>   		$string =~ s/ff+/ff/;
>      } else {
>   		print "$string, ";
>   		$string = $seite;
>      }
>      $letzte_seite = $seite;
>  }
>  print "$string$zeilen_ende";
>     }
>  else {
> 	print "$zeile";
>     }
> }



Mehr Informationen über die Mailingliste linux-l