Schrift
[thread]5745[/thread]

Perl und Windows - Server Error 500: Was passiert hier? ominöses Geschichte!

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Gast Gast
 2003-09-23 14:52
#55046 #55046
Frage an die Fachleute:

Habe ein Perl-Script per mail bekommen und per FTP (binär, 755)übertragen - passt!

Aber sobald ich unter Windows mit egal welchem Editor die Datei auch nur geringst ändere, erhalte ich nach dem Upload Internal Error 500.

Merkwürdig! Und das passiert nur mit Perl-Scripten, nicht PHP, HTML, JAVA o.Ä.

Kann das irgendwie mit dem Windows-Zeichensatz zusammenhängen?

Optisch tut sich da im Script nichts, aber technisch wohl schon...?
format_c
 2003-09-23 15:01
#55047 #55047
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Da liegst du ganau richtig.
Windows Verwendet als Zeilenumbruchszeichen das \r\n.
*NIX-Systeme hingegen \n
Und schon ist das ein unbekanntes Zeichen was dem Perl-interpreter natürlich gar nicht schmeckt.

Entweder, du wandest deine Zeilen umbrüche jedes mal vor dem Hochladen mit http://www.bastet.com/software/UDDU.ZIP umwandeln oder du schaust dir mal auf unserer Linksammlung den Editor HTML-Kit an. Dem kann man einstellen, dass er alle Zeilenumbüche in Windows oder UNIX Format speichern soll. Gibt natürlich auch einen extra Menüpunkt dafür wo man das explizit erledigen kann.

So farr....

Gruß ALex
Thorium
 2003-09-23 18:35
#55048 #55048
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
Mit FTP per ASCII mode raufladen...
Das wandelt die \r\n automatisch in \n um...
HTH
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
[E|B]
 2003-09-23 18:48
#55049 #55049
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Oder einfach diesen kleinen Code über das Script hetzen lassen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl

use warnings;
use strict;
use diagnostics;

open(F, "script.pl") || die "Unable to open: 'script.pl'!\n$!";
my $data = join("",<F>);
close(F);

$data =~ s/[\n\r]/\n/g;

open(F, "> script.pl") || die "Unable to open: 'script.pl'!\n$!";
print F $data;
close(F);
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
format_c
 2003-09-23 23:13
#55050 #55050
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Code: (dl )
$data =~ s/[\n\r]/\n/g;

Ist das richtig?
Also eine Zeichen folge von \r\n wird zu \n\n?

Ich hätte die substi eher so gestaltet:
Code: (dl )
$data =~ s/\n\r?/\n/g;


Gruß Alex
havi
 2003-09-23 23:17
#55051 #55051
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Ich mach es immer so:

Code: (dl )
$data =~ s%\r?\n%\n%g;


Gruss
format_c
 2003-09-23 23:27
#55052 #55052
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Mein ich ja.

Gruß Alex
Strat
 2003-09-24 16:14
#55053 #55053
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
oder als einzeiler in der shell:
Code: (dl )
perl -i.bak -pe 's/\r\n/\n/g' script.pl

\n braucht man ja nicht durch \n ersetzen, ist nur unnoetige arbeit ( \r?\n )...

\n\r hingegen bewirkt recht wenig, weil eine solche zeichenkombination bei windows wohl nur bei binaeren dateien vorkommen duerfte...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
format_c
 2003-09-24 16:17
#55054 #55054
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
@Strat wo du grad so mit perl Flags um dich haust;
Wie konnte man nochmal mit den Flags und evtl. einem Modul eine .pl zu einer .exe machen? AFAIK hattest du das mal im alten Forum gepostet.

Gruß Alex
Strat
 2003-09-24 16:29
#55055 #55055
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
das mit perl -O:irgendwas ist alles noch ziemlich experimentell, ebenso perlcc.....
besser da Perl2exe oder meinen Favoriten, naemlich CPAN:PAR verwenden, weil der frei ist und sowohl unter windows als auch linux gut funktioniert. Und der autor hat auch schon extra fuer mich einen bug gefixt ;-)

die syntax von par ist, wenn ich mich recht erinnere: pp -o=outfile.exe infile.pl
unter windows gibt es fuer Tk-scripte auch noch die option -gui, die das laestige shell-window klaut...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2003-09-23 14:52.