linux-l: Perlscript

Manuel Tennert mtennert at meta-systems.de
Mi Mär 21 11:03:42 CET 2001


Ich habe ein Programm geschrieben, welches Seiten "aufziehen" sollte,
also
bei mehrfach aufeinander
folgenden Seiten soll statt 101, 102, 103 ein 101ff erscheinen.
Dabei treten leider Fehler auf und zwar verschwindet Text !?
z.B.:
Boesmans, Philippe (*ô1936) <cf1><rf 374, 375, 376©<oi0p6>1.
Streichquartett
(1988) <cf1><rf 375©<oi0p6>Daydreams (1991) <cf1><rf
375©<oi0p6>Doublures
(1976) <cf1><rf 375©<oi0p6>Dreamtime (1994) <cf1><rf 375©<oi0p6>Extases
II
(1985) <cf1><rf 375©<oi0p6>Fanfare II, f?r Orgel (1972) <cf1><rf
375©<oi0p6>Konzert f?r Violine und Orchester (1980) <cf1><rf
375©<oi0p6>Reigen

Boesmans, Philippe (*ô1936) <cf1><rf 374, 375f f?r Orgel (1972) <cf1><rf

375©<oi0p6>Konzert f?r Violine und Orchester (1980)

Man sieht, dass da erheblicher Text fehlt......das Script sieht so aus:


 #!/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 ($zeile = <>) {
    if ($zeile =~ /(.*?)([0-9].*[0-9])/ ) {
 $text  = $1;
 print $text;
 $seiten = $2;
 @seiten = split /, /, $seiten;
 $letzte_seite = $seiten[0];
 $string = $letzte_seite;
 for ($i = 1; $i <= $#seiten; ++$i) {
     $seite = $seiten[$i];
     if ($seite == $letzte_seite + 1) {
# statt "f" kann in der folgenden Zeile ein anderer Buchstabe verwendet
werden
  $string .= "f";
# statt "ff" koennen in der folgenden Zeile andere Buchstaben verwendet
werden
  $string =~ s/ff+/ff/;
     } else {
  print "$string, ";
  $string = $seite;
     }
     $letzte_seite = $seite;
 }
 print "$string\n";
    }
}

Hat jemand eine Idee, wodurch das fehlen zustande kommt ?????

Danke

Manuel






Mehr Informationen über die Mailingliste linux-l