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