Schrift
[thread]5400[/thread]

perl upgrade: fehler seit perl5.8.1 upgrade



<< |< 1 2 >| >> 15 Einträge, 2 Seiten
zcmaster
 2004-01-14 16:34
#48572 #48572
User since
2004-01-14
4 Artikel
BenutzerIn
[default_avatar]
hi leute,
vor ein paar tagen installierte ich die perl version 5.8.1 auf einer suse 9.0 dis. seit diesem zeitpunkt meldet ein script zwei fehelrmeldungen und unterbricht die verarbeitung:

fehler 1: invalid range "0-^L" in transliteration operator
fehler 2: premature end of script header

möglicherweise resultiert ja fehler 2 aus fehler 1, jedoch kann ich mir die beiden fehler nicht erklären, da die files nicht umgeschrieben worden sind bzw. nur "ein versions upgrade" durchgeführt wurde.

vielleicht kann mir ja jemand helfen
format_c
 2004-01-14 16:39
#48573 #48573
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hast du das Script von Windows nach Linux portiert?

Solche seltsamen Fehlermeldungen bekomme ich manchmal wenn ich nicht druckbare Zeichen im Quelltext habe. such dir die Zeile heraus, lösch sie un tipp sie nochmal neu.

Höchstwarscheinlich resultiert der Fehler2 aus Fehler 1 da der Webserver anstatt dem erwarteten HTTP-Header deine 1.Fehlermeldung bekommt.

Gruß Alex
zcmaster
 2004-01-15 08:23
#48574 #48574
User since
2004-01-14
4 Artikel
BenutzerIn
[default_avatar]
danke für den tip,
suchte nach nicht druckbareb zeichen und verwendete zusätzlich dos2unix,
leider kein erfolgserlebnis :( .
vielleicht kennt noch jemand einen grund für diesen fehler

gruß peter
Dubu
 2004-01-15 11:04
#48575 #48575
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=zcmaster,14.01.2004, 15:34]
vor ein paar tagen installierte ich die perl version 5.8.1 auf einer suse 9.0 dis.
[/quote]
Hm. SuSE 9.0 wird doch mit Perl 5.8.1 ausgeliefert. Was hast du denn da installiert?

Quote
seit diesem zeitpunkt meldet ein script zwei fehelrmeldungen und unterbricht die verarbeitung:

fehler 1: invalid range "0-^L" in transliteration operator
fehler 2: premature end of script header

1.) Da sollten Zeilennummern bei stehen. Schau im Skript unter der angegebenen Zeilennummer.
2.) Such nach den verwendeten Transliterations-Operatoren (tr/// oder y///) und wo dort ein "-" vorkommt.
zcmaster
 2004-01-15 11:23
#48576 #48576
User since
2004-01-14
4 Artikel
BenutzerIn
[default_avatar]
hi dubu,

die zeilennummer ist mir bekannt ebenso der befehl tr.
das problem ist das das script mir einer früheren version von perl einwandfrei funktionierte,
seitdem jedoch der server upgegradet wurde (perl v 5.8.1 included in suse 9.0 eh logisch) macht das script probleme.

code in den zeilen ab dem das script nicht mehr weiter kann:
$dokument=~tr/\000-\037\041-\377/ /cs; # mehrfache Blanks weg
$dokument=~tr/000-\014\016-\377/\n/cs; # mehrfache lf's weg

die frage ist was hat sich mit von perl 5.6.0-39 auf perl 5.8.1 geändert???

gruß peter
havi
 2004-01-15 11:27
#48577 #48577
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Vielleicht irre ich, aber warum machst du nicht einfach
Code: (dl )
1
2
$dokument =~ s/ +/ /g;
$dokument =~ s/\n+/\n/g;

?

Gruss
Dubu
 2004-01-15 12:08
#48578 #48578
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
1.) Es fehlt in der zweiten Zeile der Backslash vor dem "000". Wenn das vorher "funktioniert" hat, dann nur, weil Perl vorher den Fehler ignoriert hat.
2.) Das geht einfacher mit
Code: (dl )
1
2
$dokument =~ tr/ / /s;          # mehrfache Blanks weg
$dokument =~ tr/\015/\n/s;      # wandle CR in \n und fasse zusammen

Alle Zeichen bis auf eines explizit aufzufuehren um dann wiederum das Komplement zu bilden (Option /c) ist unsinnig. Nenne direkt das eine Zeichen, das du behandeln moechtest.
Ausserdem war der Kommentar zur zweiten Zeile falshc. \015 ist kein LF, sondern ein CR. Was "\n" intern ist (CR oder LF), haengt von der Plattform ab.
zcmaster
 2004-01-15 12:11
#48579 #48579
User since
2004-01-14
4 Artikel
BenutzerIn
[default_avatar]
danke für eure hilfe problem gelöst:),
jetzt gehts erst richtig los.

also dann bis später.
nochmals herzlichen dank,
peter
havi
 2004-01-15 12:12
#48580 #48580
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
[quote=Dubu,15.01.2004, 11:08]1.) Es fehlt in der zweiten Zeile der Backslash vor dem "000". Wenn das vorher "funktioniert" hat, dann nur, weil Perl vorher den Fehler ignoriert hat.
2.) Das geht einfacher mit
Code: (dl )
1
2
$dokument =~ tr/ / /s;          # mehrfache Blanks weg
$dokument =~ tr/\015/\n/s;      # wandle CR in \n und fasse zusammen

Alle Zeichen bis auf eines explizit aufzufuehren um dann wiederum das Komplement zu bilden (Option /c) ist unsinnig. Nenne direkt das eine Zeichen, das du behandeln moechtest.
Ausserdem war der Kommentar zur zweiten Zeile falshc. \015 ist kein LF, sondern ein CR. Was "\n" intern ist (CR oder LF), haengt von der Plattform ab.[/quote]
Code: (dl )
$dokument =~ tr/ +/ /s;          # mehrfache Blanks weg


oder?

Gruss
Dubu
 2004-01-15 12:35
#48581 #48581
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=havi,15.01.2004, 11:12]
Code: (dl )
$dokument =~ tr/ +/ /s;          # mehrfache Blanks weg


oder?[/quote]
Warum willst du auch Pluszeichen ersetzen? ;)
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2004-01-14 16:34.